Moin!
Die Information "Formularfeld ist Pflichtfeld" gehört nicht in die Tabellenstruktur hinein!
Die Information die in Null gespeichert wird, ist, dieses Feld muss nicht zwingend gesetzt werden. Das ist eine Information auf Datenebene. Eine Entscheidung ob ein Formularfeld Pflicht ist, entsteht aus dem Datenmodell.Darum gehört so eine Information für mich durchaus in die Datenbank.
Ja, in die Datenbank gehört diese Information schon irgendwie hinein. Eine "echte" Datenbank könnte man wahrscheinlich mit Constraints darauf trainieren, dass nur Requests angenommen werden, die den festgelegten Regeln entsprechen (und das wären z.B. eben Pflichtfelder, die ausgefüllt sein müssen, andernfalls wird der Request zurückgewiesen).
Aber eine NULL-Spalte führt eben in jedem Datensatz ein Bit mit, das nichts wirklich zu tun hat.
Allenfalls bei Zahlendatentypen kann man den Unterschied "NULL/nicht NULL" feststellen: Wenn das <input> leergelassen wird, dann soll NULL eingetragen werden, wenn eine Zahl drinsteht, wird die eingetragen, und wenn keine Zahl drinsteht, muß man den Benutzer nochmal fragen, was das sollte.
Bei der Abfrage eines Strings hingegen kann man das nur anhand des Datenfeldes nicht mehr feststellen. Leerstring _kann_ NULL bedeuten, es kann aber auch "Leerstring" bedeuten. Wenn man Leerstring immer mit NULL übersetzt, braucht man NULL nicht, weil man auch den Leerstring nehmen könnte. Um die Unterscheidung treffen zu können, muß eine Zusatzinformation (z.B. eine Checkbox) hinzugefügt werden, mit der man regelt, ob das Feld jetzt leer ist, oder NULL.
NULL hat in meinen Augen schlicht eine andere Bedeutung, als hier verlangt wird. Es kennzeichnet eben den (nur bei gewissen Daten wirklich notwendigen) Zustand "undefiniert". In einem Webformular sind aber grundsätzlich alle Daten definiert. Und die Sicherstellung, dass Pflichtfelder auch tatsächlich ausgefüllt sind, unterstützt MySQL ja auch in keiner Weise, das ist alles der Anwendungslogik vorbehalten.
- 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>)