Moin!
Nehmen wir mal eine Tabelle an, die Bemerkungen über die Kreditwürdigkeit von Kunden enthält ;-), die in einer Spalte remark abgelegt werden.
Wenn über einen Kunden keine entsprechenden Informationen vorliegen, soll sein remark-Feld NULL oder '' als Wert bekommen? :-)
Brauchst du die Informationen "Bemerkung: Blahblah", "Bemerkung: (leer)" und "Bemerkung: (gibts nicht)"?
Oder reicht "Bemerkung: Blahblah" und "Bemerkung: (leer)" aus?
MySQL empfiehlt, so wenig wie möglich NULL-Spalten zu benutzen. Eine NULL-Spalte wäre beispielsweise sinnvoll, wenn du Meßwerte hast und jetzt irgendwie kennzeichnen mußt, dass du auch mal "keinen Meßwert" erfaßt hast. Meßwerte sind Zahlen, und alle Zahlen können als Meßwert vorkommen, also gibts keinen Wert, den man als "nicht erfaßt" nehmen könnte. NULL ist dafür gut.
Bei Textfeldern braucht man in meinen Augen zu 99% kein NULL.
Was benötigt eigentlich weniger Speicher / ist schneller? Ein NULL-Byte benötigt doch IMHO dieselben Ressourcen wie ein Zeichen, oder nicht?
Nein, NULL benötigt ein Bit zusätzlich. Aber immer, bei jedem Datensatz. Deshalb wird die DB dadurch größer, als sie sein müßte.
- Sven Rautenberg
"Beim Stuff für's Web gibts kein Material, was sonst das Zeugs ist, aus dem die Sachen sind."
(fastix®, 13. Oktober 2003, 02:26 Uhr -> </archiv/2003/10/60137/#m338340>)