Eine SQL VIEW ist eine globale logische Tabelle, die möglicherweise persistent ist. Aber es ist immer noch ein Tisch. Sollte eine VIEW daher immer an der ersten Normalform (1NF) festhalten? d. h. keine doppelten Zeilen, nur skalare Typen, keine Anordnung von oben nach unten oder von links nach rechts. Was ist mit den höheren Normalformen?Sollte eine SQL VIEW immer in 1NF sein?
Für mich "konsumieren" meine Anwendungen die Ergebnisse gespeicherter Prozeduren, meine VIEWs werden von SQL-Abfragen "konsumiert" und diese beiden Verwendungen schließen sich gegenseitig aus (dh ich frage die Ergebnismengen gespeicherter Prozeduren nicht mit SQL und Meine Anwendungen enthalten keinen SQL-Code. Ich habe gesehen, wie andere eine VIEW verwenden, um mehrere Werte in einer Spalte in eine einzelne Zeile zu "verketten", normalerweise durch Komma getrennt. Schreiben Prädikate in einer SQL-Abfrage gegen eine solche Spalte erfordert eine kludges ähnlich wie diese:
',' + concat_col + ',' LIKE '%' + ',' + search_value + ',' + '%'
So scheint es mir sinnvoll, alle Tabellen zu erwarten, die abgefragt werden können nur skalare Typen bestehen. Bin ich zu "puristisch", wenn ich das denke?
Meine Ansichten sind nur durch SQL-Abfragen 'verbraucht'. Wenn mein Programm eine Ergebnismenge in einem 'speziellen' Format benötigt, würde ich dies entweder in einem gespeicherten Proc oder in der mittleren Ebene tun. Ich schlage nicht vor, dass die Ausgabe von jedem gespeicherten proc in 1NF sein sollte, nur Ausgabe, die in der Form einer * Tabelle * ist (und ich schätze, das würde Tabellenvariablen enthalten, wo anwendbar). – onedaywhen
Sie haben offensichtlich Regeln für Ihre eigene Anwendung erstellt (keine SQL in Clients, z. B.), die für Sie arbeiten. Sie sind restriktiver als das, was ich als Best Practices bezeichnen würde, aber das Schöne daran, zu restriktiv zu sein, ist, dass es immer leicht ist, sich später umzudenken und entspannter zu sein - nicht so einfach, in die andere Richtung zu gehen. Aber im Allgemeinen kann die Ausgabe von Ansichten 1NF verletzen (obwohl duple Zeilen nutzlos sind, AFAIK). In der Tat ist die Verwendung hässlicher Ansichten eine der besten Möglichkeiten, ein hässliches Design in ein sauberes Design zu migrieren - Sie benötigen die Ansichten, um ältere Clients zu unterstützen, bis auch diese behoben werden können. –