Nulls sind entscheidend in einer Datenbank zu haben. Ich habe mich noch nie mit einer Datenbank beschäftigt, die Nullen nicht erlaubt, die am Ende nicht viel schwieriger zu hinterfragen war, viel schwieriger zu pflegen (wie entscheidest du, welcher Wert bedeutet, dass ich die Antwort nicht weiß) und normalerweise mehr schlechte Daten. Ja, Nullen erfordern eine spezielle Behandlung in Abfragen, also fügen Sie beispielsweise ein viel späteres Datum (1.1.1999) als Enddatum hinzu, um zu vermeiden, dass Sie eine Null haben.
Die Wahrheit ist, einige Daten sind gerade nicht bekannt, als der Datensatz eingefügt wird. Es gibt keinen Ersatz für null.
Nun, in Ihrem Fall, wo Sie auf zwei Tabellen ausbrechen sollten, hängt viel von der Breite der Tabellen und der Häufigkeit ab, die Sie benötigen, um diese Nullable-Abfragen abzufragen. Ich würde wahrscheinlich nicht eine zweite Spalte in eine andere Tabelle verschieben, obwohl ich viele Nullen hatte, weil sie immer mit den anderen Informationen in der Basistabelle abgefragt wird. Es wäre auch unwahrscheinlich, dass ich eine Enddatumsspalte verschieben würde. Aber wenn die Spalten Dinge waren, die man gut kennt, die man normalerweise nicht abfragt, wenn man die Basisdaten abfragt (wie Geburtstag, Haarfarbe, etc.), dann kann eine gesonderte Tabelle nur für die Datensätze, die die Daten enthalten, in Ordnung sein. Denken Sie jedoch daran, wenn Sie abfragen, ob Sie einen inneren Join verwenden, eliminieren Sie alle Datensätze, die keinen Wert in der zweiten Tabelle haben. Wenn ich normalerweise alle Datensätze haben möchte (wie mit dem zweiten Vornamen, frage ich nur selten Leute mit dem zweiten Vornamen 'Mary'), dann neige ich dazu, sie in der gleichen Tabelle zu behalten, es sei denn, der Tisch wird sehr breit und ich Normalerweise möchten Sie diese Informationen nicht abfragen.
Führen Sie Abfragen für diese beiden Felder aus? –
Mögliche Antworten auch hier: http://dba.stackexchange.com/a/5227/14987 –