Optionale Felder in SQL
Normalisierte Optionsdarstellung (ISA-Relation)
Es ist möglich, daß eine bestimmte Information nicht für alle Entitäten einer Tabelle in eine Datenbank eingetragen werden kann oder soll. Es handelt sich also gewissermaßen um eine optionale Information. Dann handelt es sich um eine 1:n-Beziehung zwischen der Entität und jener Information, wobei n gleich 0 oder gleich 1 ist. Wir nennen solch eine Beziehung, bei der n immer nur 0 oder 1 sein kann, auch eine 1:O-Beziehung oder eine Optionsbeziehung (daher „1:O“).
Aus der Tatsache, daß eine 1:O-Beziehung eine spezielle Art einer 1:n-Beziehung ist, ergibt sich, daß für die optionale Information eine separate Tabelle angelegt wird.
Beispielsweise könnte es sein, daß eine allgemeine Personendatei auch Angestellte enthält. Nur für Angestellte soll die Abteilung und die interne Rufnummer („Erweiterungsspalten“ mit optionaler Information) festgehalten werden. Jemand, der kein Angestellter ist, hat ja weder eine Abteilung noch eine interne Rufnummer.
- Normalisierte Darstellung
Person
Person Vorname Nachname
0 Laura Pfeiffer
1 Liam Wolff
2 Lina Arnold
3 Elias Sauer
4 Levi Voigt
5 Julia ThomasAngestellter
Person Abteilung Rufnummer
0 I 5631
2 I 4312
3 II 8491
5 IV 6112
Man kann der Datenbank dann auch die Information entnehmen, daß nur die Personen 0, 2, 3 und 5 Angestellte sind.
Man spricht hier auch von einer ISA-Relation zwischen den beiden Tabellen, da jeder Angestellte eine Person ist (“is a ” ist englisch für „ist ein“).
Integrierte Darstellung
Bei einer integrierten Darstellung einer 1:O-Beziehung wird auf eine extra Tabelle verzichtet und für den Fall, daß keine Information über die Rufnummer hinterlegt werden soll, der spezielle Wert »NULL« als „Rufnummer“ eingetragen, da man ein Feld nicht einfach „leer“ lassen kann.
- Integrierte Darstellung
Personen
Person Vorname Nachname Abteilung Rufnummer
0 Laura Pfeiffer I 5631
1 Liam Wolff NULL NULL
2 Lina Arnold I 4312
3 Elias Sauer II 8491
4 Levi Voigt NULL NULL
5 Julia Thomas IV 6112
Diese integrierten Darstellung verstößt gegen das wichtige Domänenprinzip, nach dem eine Spalte nur Werte aus ihrer Domäne enthalten darf. Das heißt: Jeder Wert in der Spalte »Rufnummer« muß auch eine Rufnummer sein. »NULL« ist keine Rufnummer. (Das Domänenprinzip ist aber vor allem für Basistabellen wichtig, Verstöße in abgeleiteten Tabellen sind manchmal akzeptabel.)