|
|
| Zeile 1: |
Zeile 1: |
| Ein '''Primärschlüssel''' (engl. ''primary key'') ist in einer [[Relationale Datenbank|relationalen Datenbank]] ein [[Schlüssel]] zur eindeutigen Identifizierung eines Datensatzes in einer [[Datenbanktabelle]].
| | #redirect[[Schlüssel#Primärschlüssel]] |
| | |
| == Definition und Eigenschaften ==
| |
| [[Datei:Datenbanktabelle.jpg|mini]]
| |
| Der Primärschlüssel 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>
| |
| | |
| [[Kategorie:Datenbanken]]
| |
| [[Kategorie:FI_I_SDM]]
| |
| [[Kategorie:FI_I_TP2]]
| |