Nullmarken und Dreiwertige Logik
Nullmarken wurden in Datenbanksysteme eingeführt, um das Fehlen von Informationen darzustellen. Es handelt sich hierbei also um keinen konkreten Wert und der Eintrag NULL darf nicht mit dem numerischen Wert 0 verwechselt werden.
Inhaltsverzeichnis
A- und I-Marken
Man unterscheidet zwischen A- und I-Marken, jedoch wird diese Unterscheidung von MySQL nicht vorgenommen.
A-Marken
Die A-Marke (applicable; englisch für anwendbar, zutreffend) steht für einen Wert, der in der Realität vorhanden, jedoch nicht bekannt ist.
Beispiel: Die Körpergröße in der Relation
Person(Vorname, Nachname, Haarfarbe, Augenfarbe, Körpergröße)
I-Marken
Die I-Marke (inapplicable; englisch für unanwendbar, nicht zutreffend) steht für einen Wert, der in der Realität (noch) nicht vorhanden ist.
Beispiele:
Abfahrtszeit eines Zuges in einem Bahnhof, in welchem der Zug gar nicht hält. Telefonnummer für Personen ohne Telefon.
I-Marken treten auch auf, wenn ein Attribut noch keinen Wert hat. Diese Tatsache kann eine Interpretation zulassen!
Beispiele:
Fehlendes Lieferdatum -> Der Auftrag wurde noch nicht erfüllt. Fehlendes Todesdatum -> Die Person lebt noch.
Nullmarken in Tabellen
In der Tabellform werden Nullmarken wie folgt dargestellt:
- * - - -> I-Marke
- ? - - -> A-Marke
- *? - - -> "Es ist nicht bekannt, ob..."
Beispiel:
- Heinz Dieter hat kein Telefon.
- Die Telefonnummer von Heinz Dieter ist nicht bekannt.
- Es ist nicht bekannt, ob Wolfgang A. Mozart ein Telefon / einen Telefonanschluss besitzt.
Beispiel für I-Marken in Relationen(1) :
- Lieferdatum und Rechnungsbetrag können I-Marken enthalten.
Beispiel für I-Marken in Relationen(2) :
- Da das Lieferdatum nicht angegeben ist, kann angenommen werden, dass die Lieferung noch nicht erfolgt ist.
- Der Betrag wurde noch nicht berechnet.
IsNull(X) Funktion
In einigen Datenbanksprachen gibt es das Prädikat IsNull(X). Es stellt fest, ob das Attribut X eine Nullmarke enthält. Es ist bei Nullmarken „true“ und bei echten Werten „false“.
Verarbeitung von Nullmarken
Arithmetische Ausdrücke
Ist (mindestens) ein Operand in einem arithmetischen Ausdruck NULL so wird das gesamte Ergebnis NULL.
Beispiel:
3 + 4 + NULL = NULL
Vergleichsoperatoren
Ist (mindestens) ein Argument NULL so wird der gesamte Ausdruck NULL.
Beispiel:
6 = 10 ---> False 5 < 10 ---> True 10 > NULL ---> NULL
Aggregatfunktionen
Bei den Aggregatfunktionen (Summe, Maximum, Minimum, Durchschnitt) ist das Ergebnis NULL, wenn (mindestens) ein Teil der zu untersuchenden Daten NULL ist.
Beispiel:
Summe(10,3,8,23) = 44 Maximum(10,3,8,23) = 23 Summe(10,NULL,8,23) = NULL Maximum(NULL,3,8,23) = NULL
Dreiwertige Logik
Da nun auch Nullwerte für boolsche Felder möglich werden, müssen wir die bisher 2-wertige Logik (True - False) auf eine 3-wertige Logik erweitern(True - Unknown - False).
Diese dritte Option in einer Verknüpfungstafel kann auf verschiedene Weisen dargestellt werden:
- "unknown"
- "?"
- "1/2"
Dabei ist die letzte Variante "1/2" am leichtesten zu verstehen:
Da der unbekannte Wert weder wahr (1) noch falsch (0) ist, muss er in einem Bereich dazwischen liegen (1/2).