Schlüssel: Unterschied zwischen den Versionen

Keine Bearbeitungszusammenfassung
 
(2 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 16: Zeile 16:
== Primärschlüssel ==
== Primärschlüssel ==
[[Datei:Schlüssel-SchlüsselInTabellen.png|mini]]
[[Datei:Schlüssel-SchlüsselInTabellen.png|mini]]
Um mitzuteilen, welchen der Schlüsselkandidaten man zur Identifikation der Tupel in einer Relation bevorzugt, wird aus allen Schlüsselkandidaten der '''Primärschlüssel''' ausgewählt. Der Primärschlüssel wird üblicherweise so ausgewählt, dass er:
Ein '''Primärschlüssel'''  ist in einer [[Relationale Datenbank|relationalen Datenbank]] ein [[Schlüssel]] zur eindeutigen Identifizierung eines Datensatzes in einer [[Datenbanktabelle]].
* möglichst klein ist (wenige Attribute umfasst)
 
* einen möglichst simplen Datentyp hat
=== Definition und Eigenschaften ===
* zeitlich stabil ist (seine Werte sollten sich während des gesamten Lebenszyklus der Tabelle nicht ändern)
[[Datei:Datenbanktabelle.jpg|mini]]
Der Primärschlüssel (engl. ''primary key'') wird aus der Menge der Schlüsselkandidaten einer Tabelle ausgewählt und muss folgende Eigenschaften erfüllen:
* '''Eindeutigkeit''': Jeder Wert des Primärschlüssels darf in der Tabelle nur einmal vorkommen
* '''Nicht-NULL''': Der Primärschlüssel darf keinen NULL-Wert enthalten
* '''Minimalität''': Der Primärschlüssel soll aus möglichst wenigen Attributen bestehen
* '''Stabilität''': Die Werte des Primärschlüssels sollten sich während der Lebensdauer des Datensatzes nicht ändern
 
=== Arten von Primärschlüsseln ===
==== Natürlicher Schlüssel ====
Ein natürlicher Schlüssel besteht aus Attributen, die bereits in den Geschäftsdaten vorhanden sind (z.B. Personalnummer, ISBN-Nummer).
 
==== Künstlicher Schlüssel ====
Ein künstlicher Schlüssel wird speziell für die Datenbank erzeugt und hat keine natürliche Bedeutung in den Geschäftsdaten (z.B. automatisch generierte IDs).
 
=== Bedeutung ===
Primärschlüssel sind fundamental für:
* Gewährleistung der [[Datenintegrität]]
* Aufbau von [[Beziehung (Datenbank)|Beziehungen]] zwischen Tabellen über [[Fremdschlüssel]]
* Erstellung von [[Datenbankindex|Indizes]] für performante Datenabfragen
* Vermeidung von Datenduplikaten
 
=== Beispiel ===
In einer Tabelle "Mitarbeiter" könnte der Primärschlüssel so definiert werden:
<syntaxhighlight lang="sql">
CREATE TABLE `mydb`.`Mitarbeiter` (
    `idMitarbeiter` INT NOT NULL ,
    `Vorname` VARCHAR(45) NULL ,
    `Nachname` VARCHAR(45) NULL ,
    `FKSalon` INT NOT NULL ,
    PRIMARY KEY (`idMitarbeiter`)
);
</syntaxhighlight>


== Fremdschlüssel ==
== Fremdschlüssel ==