Datenbanken & SQL

Schlüssel in Datenbanken

Eine Übersicht über die wichtigsten Schlüsselarten und deren Bedeutung für Datenbankdesign und referenzielle Integrität. Schlüssel sind ein wichtiges Thema in fast jeder Prüfung.

Primärschlüssel (Primary Key)

Ein Primärschlüssel ist ein Attribut (oder eine Attributkombination), das jeden Datensatz eindeutig identifiziert. Es darf nicht NULL sein und keine Duplikate enthalten.

Eigenschaften:

  • Jeder Datensatz muss einen eindeutigen Wert im Primärschlüssel haben.
  • Pro Tabelle darf es nur einen Primärschlüssel geben.

Beispiel:

CREATE TABLE kunden (
  kunden_id INT PRIMARY KEY,
  name VARCHAR(50)
);

Fremdschlüssel (Foreign Key)

Ein Fremdschlüssel ist ein Attribut, das auf den Primärschlüssel einer anderen Tabelle verweist. Er stellt die Beziehung zwischen zwei Tabellen her.

Eigenschaften:

  • Muss entweder NULL sein oder auf einen existierenden Primärschlüssel zeigen.
  • Ermöglicht die referenzielle Integrität zwischen Tabellen.

Beispiel:

CREATE TABLE bestellungen (
  bestell_id INT PRIMARY KEY,
  kunden_id INT,
  FOREIGN KEY (kunden_id) REFERENCES kunden(kunden_id)
);

Kombinationsschlüssel (Composite Key)

Ein Kombinationsschlüssel (auch zusammengesetzter Schlüssel) besteht aus mehreren Attributen, die zusammen einen Datensatz eindeutig identifizieren.

Beispiel: In einer Tabelle teilnahmen für ein Event-System:

CREATE TABLE teilnahmen (
  benutzer_id INT,
  event_id INT,
  PRIMARY KEY (benutzer_id, event_id)
);
Ein Benutzer kann an mehreren Events teilnehmen, aber pro Event nur einmal. Die Kombination aus benutzer_id und event_id ist eindeutig.

Referenzielle Integrität

Die referenzielle Integrität stellt sicher, dass Fremdschlüssel nur auf existierende Primärschlüssel zeigen. Sie schützt vor inkonsistenten Daten.

Regeln:

  • Es darf kein Fremdschlüsselwert existieren, der nicht auf einen existierenden Primärschlüssel verweist.
  • Beim Löschen oder Ändern von referenzierten Datensätzen müssen Regeln definiert sein (ON DELETE, ON UPDATE).

Beispiel:

CREATE TABLE bestellungen (
  bestell_id INT PRIMARY KEY,
  kunden_id INT,
  FOREIGN KEY (kunden_id)
    REFERENCES kunden(kunden_id)
    ON DELETE CASCADE
);
Bedeutet: Wenn ein Kunde gelöscht wird, werden automatisch alle zugehörigen Bestellungen mit gelöscht (Kaskadeneffekt).

Optionen für ON DELETE und ON UPDATE

OptionBeschreibung
CASCADEFührt die Änderung oder Löschung automatisch in der abhängigen Tabelle durch.
SET NULLSetzt den Fremdschlüsselwert auf NULL. Nur erlaubt, wenn das Feld NULL akzeptiert.
SET DEFAULTSetzt den Fremdschlüsselwert auf einen definierten Standardwert (DEFAULT).
RESTRICTVerhindert die Änderung/Löschung, wenn abhängige Datensätze existieren. Sofortige Prüfung.
NO ACTIONWie RESTRICT, aber Prüfung kann verzögert erfolgen (meist identisch in Wirkung).

Zusammenfassung

SchlüsselartFunktionBeispiel
PrimärschlüsselEindeutige Identifikation von Datensätzenkunden_id in kunden
FremdschlüsselVerknüpfung zu anderen Tabellenkunden_id in bestellungen
KombinationsschlüsselKombination mehrerer Attribute als Schlüssel(benutzer_id, event_id) in teilnahmen
Referenzielle IntegritätSicherstellung gültiger VerweiseFOREIGN KEY (...) REFERENCES ...