Datenbank Schlüssel
-
Ein Schlüssel ist eine
Menge von Attributen (also eines oder mehrere), die eine Datenzeile (Tupel)
einer Tabelle eindeutig identifiziert
- Unter einem Schlüsselkandidaten versteht man ein Schlüssel mit minimaler Anzahl Attribute (eine Personalausweis Nummer hat eine eindeutiges Attribut, Eine Koordinate (Länge/Breite zwei...)
Eine Relation kann mehrere Schlüsselkandidaten haben!
Vereinfacht:
Jede Reihe in einer Tabelle sollte eindeutig identifizierbar sein, d.h. in
einer Spalte der Tabelle sollten Werte eingetragen sein, die einmalig sind und
die betreffende Reihe eindeutig identifizieren (z.B. Identifikationsnummer).
Eine solche Spalte nennt man Primärschlüssel (primary
key).
ID |
Titel |
Interpret |
Spiellänge |
Preis |
1 |
Queen Live |
Queen |
65:01 |
12.99 |
Primärschlüssel:
ID (hier können wir sicher sein das es bei einer fortlaufenden ID nur
ein vorkommen dieser gibt und somit jede Zeile eindeutig identifiziert werden
kann.)
Ein Primärschlüssel kann sich auch aus mehreren
Attributen zusammensetzen, dann spricht man von einem zusammengesetzter
Primärschlüssel (composite key)
Titel |
Interpret |
Spiellänge |
Preis |
Queen Live |
Queen |
65:01 |
12.99 |
Zusammengesetzter
Primärschlüssel: Titel und Interpret (wobei zu überprüfen ist ob diese
Kombination wirklich einmalig ist! Bzw. ob es nicht sein kann das eine CDs
mehrfach vorhanden ist)
Mittels des Primärschlüssels ist die Verknüpfung mit
anderen Tabellen einfach: in der anderen Tabelle muß nur eine Spalte vorhanden
sein, in der der entsprechende Primärschlüssel der ersten Spalte eingetragen
ist. Eine solche Spalte nennt man auswärtigen Schlüssel (foreign key). CDs
ID |
Titel |
Interpret |
Spiellänge |
Preis |
1 |
Queen Live |
11 |
65:01 |
12.99 |
Interpreten
Der Primärschlüssel der Tabelle
Interpreten ist in der Tabelle CDs gleichzeitig der sogenannte
Fremdschlüssel (foreign
key).
Begrifflichkeit: Ein Schlüsselattribut ist ein Attribut, das Teil mindestens eines Schlüsselkandidaten ist. Alle anderen Attribute sind Nicht-Schlüsselattribute
MySQL unterstützt bis zur Version 4.0 keine foreign key's sie können zur Kompatibilität zu anderen DBs
(z.B. Oracle) jedoch angelegt werden. (MySQL ignoriert sie dann einfach) Für die
Datenintegrität ist der Entwickler der die DB verwendet selbst
verantwortlich. Um in neueren Versionen Forein Keys verwenden zu können, muss als Tabellentyp InnoDB verwendet werden!
Beispiel:
CREATE TABLE parent(id INT NOT NULL, PRIMARY KEY (id)) TYPE=INNODB; CREATE TABLE child(id INT, parent_id INT, INDEX par_ind (parent_id), FOREIGN KEY (parent_id) REFERENCES parent(id) ON DELETE SET NULL ) TYPE=INNODB;
|