yo,
"Es ist nicht bekannt" = NULL
"Kunde hat keine" oder "Kunde will sie uns nicht mitteilen" = ""
"Kunde hat eine" = "john.doe@example.com"
mit der wahl von NULL im sinne unbekannt stimme ich dir zu, so würde ich es auch immer verwenden. mit dem "" wert bin ich nicht so überzeugt und finde die vorgehensweise von oracle nicht so dumm wie du. für mich wirkt das abspeichern eines wertes, der sich von NULL unterscheidet, aber auch nicht wirklich einen wert beinhaltet, ein wenig wie taschenspielertricks auf datenbankebene.
die ganze problematik ensteht dadurch, dass man ein attribut hat, wie zum beispiel e-mail. hat der kunde eine e-mail adresse, trage ich sie ein, kann ich keine aussage darüber treffen, dann eben NULL. nun fängt der schlammassel aber damit an, dass ich noch mehr infos bezüglich der e-mail spalte speichern will, wie zum beispiel folgende:
"Kunde will sie uns nicht mitteilen"
"Kunde hat keine"
"Kunde wurde angerufen, aber noch nicht erreicht"
etc.
und dann fange ich an diese informationen irgendwie auch noch in die spalte e-mail unterzubringen, indem ich versuche pseudo-werte wie "" oder ähnliches in die spalten reinzuschreiben und sie dann noch hinten rum richtig interpretieren muss, was die wartbarkeit nicht gerade einfacher macht. in meinen augen ist das schlechter stil. wie willst du den diese ganzen möglichen informationen festhalten, wenn du nicht nur "nicht vorhanden" persistieren willst, sondern auch andere infos wie oben beschrieben, fängst du dann an ein Zahlensystem dort abbzubilden in der spalte e-mail ?
ich hatte eine zeit lang viel mit migration zu tun und ich fand es schrecklich, was da zum teil alles in einer spalte wie e-mail drinne stand, leestrings, 0 er, "-" und was nicht noch alles für ein quatsch. für mich ist das sehr unsauber, in die spalte gehört für mich eine e-mail adresse oder ein NULL wert und sonst nichts. und wenn ich diese vorgehensweise berücksichtige, dann brauche ich solch möchte-gern-werte wie "" gar nicht mehr. will ich zusätzliche informationen speichern, dann eben nicht in der spalte e-mail, sondern an einem anderen ort, wo es hingehört. das ist in meinen augen viel sauberer.
Wenn ein DBMS das nicht zu unterscheiden vermag bzw. die Unterschiede dazwischen verwischt, ist es IMHO fehlerhaft und (in diesem Punkt) schlecht ... egal, wie toll oder bekannt der Hersteller ist.
nein, von fehlerhaft kann keine rede sein. es mag eine andere vorgehensweise sein, aber als fehler würde ich das nicht bezeichnen. man muss es aber wissen.
Ilja