Databases Reference
In-Depth Information
Dieser Ansatz würde aber in letzter Konsequenz dazu führen, dass alle potenzi-
ell unbekannten Spalten unserer Tabelle personen ausgelagert werden. Die Da-
tensätze müssen bei jedem Zugriff umständlich aus den Tabellen - von denen
es dann je Spalte eine gibt - zusammengesetzt werden. Auch wenn Schlüssel-
Fremdschlüsselbeziehungen ein wahrer Segen sind, darf ihr Einsatz nicht aus-
ufern.
2. Lösung (Standardwerte): Für jedes Attribut kann ein Standardwert gewählt
werden, der dann unvollständige Informationen repräsentiert. Dieser Ansatz
wird auch von SQL unterstützt:
Listing 5.9: Eine Tabellendefinition mit Standardwerten
create table personen(
id int primary key,
name varchar(20) default ''
)
Ist der Name einer Person nicht bekannt, kann er bequem eingefügt werden:
insert into personen values(23, default)
Ein anschließender select zeigt uns, dass hier in die Spalte name tatsächlich ein
leerer Text eingetragen wurde. Wenn wir uns bei unbekannten Namen auf leere
Texte festgelegt haben, dann muss diese Konvention auch den Anwendern unse-
rer Datenbank mitgeteilt werden, da sie sonst an anderer Stelle für Spalten, die
ebenfalls Namen repräsentieren, mit anderen Standardwerten arbeiten. Irgend-
wann geht der Überblick über die verschiedenen Standards für Namen verloren.
Standardwerte für unbekannte Daten bergen also auch einige Risiken, die durch
einen alten Bekannten reduziert werden können:
create domain name_t as varchar(20) default '';
create table personen(
id int primary key,
name name_t
)
Durch den Wertebereich name_t erhalten wir eine einheitliche Behandlung aller
Namen. Um Datensätze in die Tabelle einzufügen, in denen der Standardwert
verwendet wird, gibt es zwei Möglichkeiten:
Listing 5.10: Daten mit Standardwerten einfügen
insert into personen values(4711, default);
insert into personen(id) values(42)
Search WWH ::




Custom Search