Was ist Fremdschlüssel?

Spalte, die auf den Primärschlüssel (oder eine eindeutige Spalte) einer anderen Tabelle verweist. Über die Bedingung der referenziellen Integrität, die nur in der referenzierten Tabelle vorhandene Werte oder NULL zulässt, verhindert sie Daten, die auf nicht existierende Zeilen zeigen. Auch das Verhalten beim Löschen oder Ändern einer referenzierten Zeile (Zurückweisen, kaskadierendes Löschen usw.) lässt sich festlegen.

Japanische Bezeichnung: 外部キー

„Fremdschlüssel“ kommt in 5 Übungsfragen aus 1 Themen vor, z. B. Grundlagen der Datenbanken.

Fachgebiet: Grundlagen der Datenbanken

Jetzt üben: Fragen zu Fremdschlüssel

Der Primärschlüssel einer Kundentabelle (KundenID, Name) ist KundenID, und KundenID in einer Bestelltabelle (BestellID, KundenID) ist als Fremdschlüssel definiert, der auf KundenID der Kundentabelle verweist. Die Kundentabelle enthält nur die Zeilen mit KundenID 'C1' und 'C2'. Was geschieht, wenn in diesem Zustand INSERT INTO Bestellung VALUES ('O9', 'C5') ausgeführt wird?

  1. ADa die Bedingung der referenziellen Integrität verletzt wird, wird die Zeile nicht eingefügt, und es tritt ein Fehler auf
  2. BDie Zeile wird eingefügt, und in der Kundentabelle wird automatisch eine Zeile mit KundenID 'C5' ergänzt
  3. CDie Zeile wird eingefügt, aber ihr Wert für KundenID wird durch NULL ersetzt
Antwort und Erläuterung anzeigen

Antwort: A. Da die Bedingung der referenziellen Integrität verletzt wird, wird die Zeile nicht eingefügt, und es tritt ein Fehler auf

Ein Fremdschlüssel ist eine Spalte, die auf den Primärschlüssel (o. Ä.) einer anderen Tabelle verweist, hier der Kundentabelle, und er setzt die Bedingung der referenziellen Integrität durch: Gespeichert werden dürfen nur Werte, die in der referenzierten Tabelle existieren, oder NULL. Die Kundentabelle enthält keinen Kunden 'C5', daher weist das DBMS den Versuch zurück, eine Bestellung für einen nicht existierenden Kunden einzufügen, und es tritt ein Fehler auf. So wird verhindert, dass Bestellungen zurückbleiben, die keinem Kunden zuzuordnen sind. Umgekehrt wird auch der Versuch, eine Kundenzeile zu löschen, zu der noch Bestellungen existieren, beim Standardverhalten (NO ACTION) zurückgewiesen. Mit ON DELETE CASCADE in der Fremdschlüsseldefinition lässt sich erreichen, dass beim Löschen eines Kunden auch dessen Bestellungen kaskadierend gelöscht werden.

„Fremdschlüssel“ in den Erläuterungen

Fragen mit „Fremdschlüssel“ (5)

  1. Der Primärschlüssel einer Kundentabelle (KundenID, Name) ist KundenID, und KundenID in einer Bestelltabelle (BestellID, KundenID) ist als Fremdschlüssel definiert, der auf KundenID der Kundentabelle verweist. Die Kundentabelle enthält nur die Zeilen mit KundenID 'C1' und 'C2'. Was geschieht, wenn in diesem Zustand INSERT INTO Bestellung VALUES ('O9', 'C5') ausgeführt wird?
  2. Eine Belegungstabelle (StudentNr, KursNr, Note) hält fest, welcher Studierende welchen Kurs mit welcher Note belegt hat. Ein Studierender belegt mehrere Kurse, und ein Kurs wird von mehreren Studierenden belegt. Welcher Primärschlüssel ist für diese Tabelle geeignet, wenn sich derselbe Studierende nie zweimal für denselben Kurs anmeldet?
  3. Der Primärschlüssel einer Mitarbeitertabelle (MitarbeiterNr, Name, Abteilungscode, Abteilungsname) ist MitarbeiterNr, und jede Spalte enthält nur einen einzigen Wert. Die funktionalen Abhängigkeiten sind MitarbeiterNr → Name, MitarbeiterNr → Abteilungscode und Abteilungscode → Abteilungsname. Welche Aussage über die Normalform dieser Tabelle ist richtig?
  4. In einem E-R-Diagramm besteht zwischen Studierenden und Kursen eine Viele-zu-viele-Beziehung: Ein Studierender belegt mehrere Kurse, und ein Kurs wird von mehreren Studierenden belegt. Wie lässt sich diese Beziehung mit Tabellen einer relationalen Datenbank geeignet umsetzen?
  5. Welche der ACID-Eigenschaften, die eine Transaktion haben sollte, besagt, dass eine Überweisung, die Konto A belastet und Konto B gutschreibt, entweder vollständig oder gar nicht ausgeführt wird, selbst wenn zwischendurch ein Fehler auftritt?

Verwandte Begriffe

Primärschlüssel SQL Dritte Normalform (3NF) E-R-Diagramm (Entity-Relationship-Diagramm) ACID-Eigenschaften Transaktion Index (Datenbankindex) Isolationslevel Normalisierung NoSQL

Zur Glossarübersicht