SQL-Grundsatzfrage - Leerstring oder NULL

Status
Nicht offen für weitere Antworten.
G

Guest

Gast
Hallo!

Szenario
- Verwaltung diverser Stammdaten (Adressen, ...)
- Relationales DBMS
- Beliebiges Frontend

Im Zuge der Datenmodellierung ist folgende Entscheidung zu treffen:
Sollen leere Werte vom Typ VARCHAR durch NULLs oder Leerstrings ('') repräsentiert werden?

Vorteile mit Leerstrings:
Keine Sonderbehandlung von NULL-Werten nötig, kein Hin- und Herkonvertieren zwischen DB und Frontend, problemlose Konkatinierung div. Inhalte

Spricht etwas gegen die Variante "Leerstring"?
z. B. Performance, SQL-Ideologie, ...

Schöne Grüße an alle
 
G

Guest

Gast
Nachtrag:

Es geht im ersten Posting im Prinzip um dieselbe Frage wie im Thread Null in SQL.

Allerdings wurde dort eher produktspezifisch (Access) diskutiert.

Ich würde dieses Thema aber gerne produkt- und programmiersprachenunabhängig diskutieren.

Schöne Grüße
 

Caffè Latte

Bekanntes Mitglied
Hi,

gibt es eine SQL-Ideologie? :D

Wie dem auch sei: ich nehme lieber NULL-Werte, weil die RDBMS spezielle Funktionen dafür haben und ich meine Programme möglichst wenig, das Datenbanksystem möglichst viel machen lassen will.

Wenn du trotzdem Leerstrings nehmen willst spricht IMHO nichts dagegen. Die Performance dürfte nur messbar schlechter sein.
 
G

Guest

Gast
Hallo Caffè Latte!

Caffè Latte hat gesagt.:
Die Performance dürfte nur messbar schlechter sein.

Bei einem guten Datenmodell soll es ja eh wenige NULLs bzw. Leerstrings (Ideologie :?: ) geben.
Warum ist dann die Performance schlecht?

Herzliche Grüße
 

Caffè Latte

Bekanntes Mitglied
Hi,

NULL ist ja nichts, ein Leerstring ist aber etwas. Nichts zu handeln geht schneller als mit einem String zu arbeiten, auch wenn der leer ist. Bei VCHAR-Felder kommt noch dazu, dass aufgrund der variablen Länge das RDBMS immer was zu berechnen hat.

Warum sollte es nur wenige NULLS geben? "NOT NULL" steht doch nur für Pflichtfelder. In vielen Tabellen die ich kenne gibt es auch viele solche Felder. Ob NULL oder nicht hat doch mit dem Datenmodell nichts zu tun.
 
G

Guest

Gast
Hallo,

Caffè Latte hat gesagt.:
Warum sollte es nur wenige NULLS geben? "NOT NULL" steht doch nur für Pflichtfelder. In vielen Tabellen die ich kenne gibt es auch viele solche Felder. Ob NULL oder nicht hat doch mit dem Datenmodell nichts zu tun.

Ich kann's jetzt nicht belegen, glaube aber mehrfach gelesen zu haben, dass das Vorhandensein vieler NULL-Werte ein Hinweis auf ein (theoretisch) unausgereiftes Datenmodell ist.

Prinzipiell kannst Du Spalten, die nur selten benutzt werden, in eine eigene Tabelle auslagern. Ist praktisch wahrscheinlich meist kontraproduktiv.

Herzliche Grüße
 

Dante

Bekanntes Mitglied
hi,

ein leerer string hat doch eine andere semantik als null. null meint, hier ist *nix*, ein leerer string ist ein leerer string, also nicht *nix*. Ein NOT NULL feld könnte ja theoretisch einen leeren string aufnehmen. Die Applikation müsste hier also entsprechend überprüfen (Sofern ein leerer string nicht zu den gültigen eingaben gehört)

@Gast: ausgereifte Datenmodelle sind praktisch meist kontraproduktiv :)
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen

Ähnliche Java Themen


Oben