Databases Reference
In-Depth Information
Spielkarten werden durch Texte repräsentiert; dieser Eigenschaft haben wir
bereits Rechnung getragen, indem wir den SQL-Datentyp varchar für beide
Spalten nutzten.
Bei der Diskussion des relationalen Modells haben wir gelernt, dass jede Re-
lation (mindestens) einen Schlüsselkandidaten enthält. Wir identifizieren die
Schlüsselkandidaten des Relationentypen und berücksichtigen sie in der Ta-
bellendefinition mit Hilfe des Schlüsselwortes unique .
Ein Charakteristikum der Schlüsselkandidaten - nämlich die Irreduzibilität -
kann das RDBMS natürlich nicht überprüfen. Der Grund besteht in einem wei-
teren wesentlichen Unterschied zwischen SQL-Tabellen auf der einen und Rela-
tionen und Relationentypen auf der anderen Seite.
Änderungen sind in Relationen und Relationentypen nicht vorgesehen.
Tabellen können sich dagegen sehr wohl ändern.
Wenn die Tabelle spielkarten zunächst aus den beiden Datensätzen besteht,
die den Karten Herz-Ass und Pik-Ass entsprechen, kann man auf die Idee kom-
men, dass die Spalte farbe bereits die Datensätze identifiziert und der Schlüssel
(farbe, karte) somit reduzierbar ist. Das ändert sich aber rasch, wenn wir
etwa den Datensatz einfügen, der der Karte Herz-Dame entspricht. Das RDBMS
kann im Allgemeinen nicht „wissen“, welche Daten künftig eingefügt werden,
und kann somit auch nicht prüfen, ob der Schlüssel irreduzibel ist. Genau genom-
men
gewährleistet das RDBMS, dass (farbe, karte) eindeutig und somit ein
Superschlüssel ist;
garantieren wir aufgrund unseres Wissens über den Relationentypen, dass
(farbe, karte) irreduzibel und somit Schlüsselkandidat ist.
Ganz ähnlich wie im vorigen Beispiel erlaubt uns die SQL-Syntax, die Spalte
farbe zum Schlüsselkandidaten zu machen:
Listing 5.3: Eine anonyme unique -Constraint
create table spielkarten(
farbe varchar(20),
karte varchar(20),
unique(farbe)
)
Dieser Tabelle entspricht ein anderer Relationentyp als der Tabelle in Listing 5.2.
Wir können nach der folgenden Anweisung
insert into spielkarten values('Pik', '7')
mit
 
Search WWH ::




Custom Search