# SQL-Grundsatzfrage - Leerstring oder NULL



## Guest (20. Aug 2007)

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


----------



## Guest (20. Aug 2007)

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 (20. Aug 2007)

Hi,

gibt es eine SQL-Ideologie? 

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.


----------



## Guest (20. Aug 2007)

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 (20. Aug 2007)

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.


----------



## Guest (20. Aug 2007)

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 (23. Aug 2007)

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


----------

