Es gibt verschiedene Einwände gegen die Verwendung von NULL. Einige der Einwände beruhen auf der Datenbanktheorie. In der Theorie gibt es keinen Unterschied zwischen Theorie und Praxis. In der Praxis gibt es.
Es ist wahr, dass eine vollständig normalisierte Datenbank überhaupt ohne NULL auskommen kann. Jeder Ort, an dem ein Datenwert weggelassen werden muss, ist ein Ort, an dem eine ganze Zeile ohne Informationsverlust weggelassen werden kann.
In der Praxis dient das Zerlegen von Tabellen in diesem Ausmaß keinem großen nützlichen Zweck, und die zur Ausführung einfacher CRUD-Operationen an der Datenbank erforderliche Programmierung wird mühsamer und fehleranfälliger als weniger.
Es gibt Stellen, an denen die Verwendung von NULLS Probleme verursachen kann: Im Wesentlichen geht es um die folgende Frage: Was bedeuten fehlende Daten wirklich? Alles, was ein NULL wirklich vermittelt, ist, dass in einem bestimmten Feld kein Wert gespeichert ist. Aber die Schlussfolgerungen, die Anwendungsprogrammierer aus fehlenden Daten ziehen, sind manchmal falsch, und das verursacht viele Probleme.
Daten können aus verschiedenen Gründen an einem Ort fehlen. Hier sind ein paar:
Die Daten sind in diesem Zusammenhang nicht anwendbar. zB Vorname des Ehepartners für eine einzelne Person.
Der Benutzer eines Dateneingabeformulars hat ein Feld leer gelassen, und für die Anwendung ist keine Eingabe in das Feld erforderlich.
Die Daten werden aus einer anderen Datenbank oder Datei in die Datenbank kopiert, und in der Quelle fehlten Daten.
Es gibt eine optionale Beziehung, die in einem Fremdschlüssel codiert ist.
Eine leere Zeichenfolge wurde in einer Oracle-Datenbank gespeichert.
Hier sind einige Richtlinien, wann Sie NULL-Werte vermeiden sollten:
Wenn im Verlauf der normalen erwarteten Programmierung Abfrageschreiber viel ISNULL-, NV-, COALESCE- oder ähnlichen Code schreiben müssen, um NULL durch einen gültigen Wert zu ersetzen. Manchmal ist es besser, die Ersetzung zur Ladenzeit vorzunehmen, vorausgesetzt, das, was gespeichert wird, ist "Realität".
Wenn die Anzahl wahrscheinlich nicht stimmt, weil Zeilen mit einem NULL-Wert gezählt wurden. Oft kann dies vermieden werden, indem nur count (MyField) anstelle von count (*) ausgewählt wird.
Hier ist ein Ort, an dem Sie sich besser an NULLS gewöhnen und entsprechend programmieren können: Wann immer Sie anfangen, äußere Verknüpfungen wie LEFT JOIN und RIGHT JOIN zu verwenden. Der springende Punkt hinter einem äußeren Join im Unterschied zu einem inneren Join ist das Abrufen von Zeilen, wenn einige übereinstimmende Daten fehlen. Die fehlenden Daten werden als NULL angegeben.
Mein Fazit: Entlassen Sie die Theorie nicht, ohne sie zu verstehen. Aber lernen Sie, wann Sie von der Theorie abweichen und wie Sie ihr folgen können.