Schlüssel
Primärschlüssel
Die 3. Richtlinie zur Definition von Tabellen besagt, dass jeder Datensatz in einem Tupel (Zeile) eindeutig von allen anderen Tupeln verschieden ist. Aus diesem Grundsatz zu korrekten Relationen läßt sich feststellen, dass immer ein sogenannter Primärschlüssel (engl. primary key) existieren muss, der die Zeile eindeutig identifiziert.
Wie ist das zu interpretieren in folgender Tabelle?
Produkttyp | Ausführungsart | Bestand | Preis |
Schnelllauftor | M2 | 2 | 8000 |
Schnelllauftor | D313 | 1 | 6000 |
Sektionaltor | T400 | 5 | 4500 |
Horizontalöffner | D313 | 0 | 12000 |
Die einzelnen Tupel der Tabelle Torsysteme sind eindeutig. Jedoch erfüllt kein Attribut alleine die oben beschriebene Anforderung an einen Primärschlüssel. Nehmen wir jedoch die Attribute Produkttyp und Ausführungsart zusammen, so ist die Anforderung erfüllt. Der Primärschlüssel erstreckt sich also über zwei Attribute:
Primärschlüssel = ( Produkttyp, Ausführungsart )
ACHTUNG: Primärschlüssel müssen beim Anlegen einer Tabelle vom Anwender deklariert werden.
In der Praxis werden Primärschlüssel häufig als sogenannte ID den Attributen hinzugefügt. Dieses "Extraattribut" wird dann mit einem auto-inkrement ausgestattet, wodurch jede INSERT-Anfrage (ob erfolgreich oder nicht) an die Tabelle mit einem eindeutigen Wert belegt wird. Eine doppelte Wertvergabe ist ausgeschlossen.
SystemID | Produkttyp | Ausführungsart | Bestand | Preis |
1 | Schnelllauftor | M2 | 2 | 8000 |
2 | Schnelllauftor | D313 | 1 | 6000 |
3 | Sektionaltor | T400 | 5 | 4500 |
4 | Horizontalöffner | D313 | 0 | 12000 |
Beispiel: Personendaten
Fazit
Was haben wir gewonnen durch Schlüsselverteilungen?
- Datensätze bleiben Semantisch in Beziehung. Eine Verknüpfung bzw. Referenz wird durch Fremdschlüsselverteilung erzeugt.
- Redundanz wird verringert (teilweise ganz vermieden): Änderungen an einer einzigen zentraler Stelle möglich, vgl. Bild oben.
Primärschlüssel (primarey key)
- Ein Primärschlüssel kennzeichnet einen Tupel eindeutig.
- Ein Primärschlüssel besteht aus mindestens einem Attribut
- Pro Relation gibt es nur einen Primärschlüssel
Fremdschlüssel (foreign key)
- Ein Fremdschlüssel besteht aus mindestens einem Attribut.
- Ein Fremdschlüssel innerhalb der Tabelle A beinhaltet den Primärschlüssel einer weiteren Tabelle B.
- Fremdschlüssel der Tabelle A müssen die selbe Syntax/Semantik der Bezugstabelle B haben.
- z.B. Tabelle A: SystemID (int: unsigned) ==> Tabelle B: SystemID (int: unsigned)
- Die Namensgleichheit der Fremdschlüssel zum Primärschlüssel der Ursprungtabelle ist nicht vorgeschrieben, vereinfacht die Lesbarkeit, Auffindbarkeit und Wartbarkeit der Datenbank aber ungemain.
Lizenziert unter Creative Commons Attribution Non-commercial Share Alike License 4.0