Schlüssel: Unterschied zwischen den Versionen
Markierung: Manuelle Zurücksetzung |
|||
| Zeile 16: | Zeile 16: | ||
== Primärschlüssel == | == Primärschlüssel == | ||
[[Datei:Schlüssel-SchlüsselInTabellen.png|mini]] | [[Datei:Schlüssel-SchlüsselInTabellen.png|mini]] | ||
Ein '''Primärschlüssel''' ist in einer [[Relationale Datenbank|relationalen Datenbank]] ein [[Schlüssel]] zur eindeutigen Identifizierung eines Datensatzes in einer [[Datenbanktabelle]]. | |||
* | |||
* | === Definition und Eigenschaften === | ||
* | [[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 == | ||