Una VISTA SQL è una tabella logica globale che può essere o non essere mantenuta. Ma è ancora un tavolo. Pertanto, una VISTA dovrebbe sempre aderire alla prima forma normale (1NF)? cioè senza righe duplicate, solo scalari, senza ordinamento da cima a fondo o da sinistra a destra, ecc. Che dire delle forme normali più alte?Una VISTA SQL dovrebbe sempre essere in 1NF?
Per me, le mie applicazioni "consumano" i risultati dei processi memorizzati, le mie VISUALIZZAZIONI vengono "consumate" da query SQL e questi due usi si escludono a vicenda (ovvero non interrogare i gruppi di risultati dei processi memorizzati utilizzando SQL e le mie applicazioni non contengono codice SQL). Ho visto altri che usano una VISTA per "concatenare" più valori in una colonna in una singola riga, in genere in formato separato da virgole. Scrivendo predicati in una query SQL contro una tale colonna richiede un kludges simili a questo:
',' + concat_col + ',' LIKE '%' + ',' + search_value + ',' + '%'
Quindi mi sembra ragionevole aspettarsi tutte le tabelle che possono essere interrogati consistere di soli tipi scalari. Sono troppo "purista" pensando questo?
miei punti di vista sono 'consumati' da solo le query SQL. Se il mio programma ha bisogno di un set di risultati in un formato "speciale", lo farei in un processo memorizzato o nel livello intermedio. Non sto suggerendo che l'output di ogni proc memorizzato dovrebbe essere in 1NF, solo l'output che è nella forma di una * tabella * (e suppongo che includerebbe le variabili di tabella dove applicabile). – onedaywhen
Hai ovviamente creato regole per la tua applicazione (nessun SQL nei client, ad esempio) che funzioni per te. Sono più restrittive di quelle che considererei le migliori pratiche, ma la cosa bella dell'essere troppo restrittive è che è sempre facile cambiare idea in seguito ed essere più rilassati, non è così facile andare dall'altra parte. Generalmente, l'output delle visualizzazioni può violare 1NF (sebbene le righe duplicate siano inutili, AFAIK). In effetti, l'utilizzo di viste brutte è uno dei modi migliori per migrare un design brutto in un design pulito: è necessario che le viste supportino i client legacy fino a quando non vengono risolti. –