Sven Rautenberg (off site): mysql not null oder null

Beitrag lesen

Moin,

Was ist denn dieses verflixte NULL und warum sollte ich jemals NULL einfügen wollen, wo kommt sowas vor? Wenn ein Wert bei mir nicht vorhanden ist, ist er eben '' also leer.

Angenommen, du mißt jeden Tag Temperatur und Luftfeuchte und trägst diese in eine DB ein.

Als Wertebereich nimmst du z.B. Integer.

Nach einigen Wochen des Messens fällt die Batterie in deinem Thermometer aus, und du kannst nicht mehr messen. Die Luftfeuchtigkeit kannst du aber noch ablesen.

Was schreibst du jetzt als Temperatur in die Datenbank? Die Zahl 0 ist falsch, weil es nicht 0 Grad warm war. Irgendeine andere Zahl funktioniert auch nicht, weil du dir damit die Ermittlung der Durchschnittstemperatur pro Monat (mit AVG()) zerstörst.

Antwort deshalb: Das Temperaturfeld kriegt NULL erlaubt, und die nicht messbare Temperatur trägst du mit NULL dort ein. NULL-Werte werden von der Datenbank besonders behandelt, so dass sie z.B. nicht im Durchschnitt einfließen.

Für Textfelder ist NULL dagegen ein eher sinnloser Wert, weil gegenüber dem Benutzer in der Oberfläche nur selten ein Unterschied gemacht wird zwischen "Textstring ist der Leerstring" und "Textstring ist nicht vorhanden". Man müßte ja (beispielsweise) jedem Textfeld noch eine Checkbox hinzufügen, die man anklicken muß, wenn der String NULL sein soll. Leerstrings funktionieren in der Regel perfekt.

- Sven Rautenberg