Grundlagen der Datenbanken

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.

Dieses Thema üben Zur Themenseite

Weitere Fragen zu Grundlagen der Datenbanken

  1. SQL-Anweisungen werden in Datendefinitionssprache (DDL), Datenmanipulationssprache (DML) und Datenkontrollsprache (DCL) eingeteilt. Welche Anweisung gehört zur DDL?
  2. Eine Produkttabelle enthält fünf Zeilen (Name, Preis): (Stift, 120), (Heft, 250), (Radierer, 80), (Ordner, 300), (Lineal, 150). Welche Antwort zeigt in der richtigen Reihenfolge die Zeilen, die SELECT Name FROM Produkt WHERE Preis >= 150 ORDER BY Preis DESC zurückgibt?
  3. Die Spalte Abteilung einer Mitarbeitertabelle enthält von der obersten Zeile an die Werte Vertrieb, Entwicklung, Vertrieb, Verwaltung, Entwicklung, Vertrieb (insgesamt 6 Zeilen). Wie viele Zeilen liefert SELECT DISTINCT Abteilung FROM Mitarbeiter?
  4. Was ist das Ergebnis, wenn in SQL DELETE FROM Mitarbeiter ohne WHERE-Klausel ausgeführt wird?
  5. Die Spalte Punkte einer Testtabelle enthält vier Werte: 80, NULL, 70, 90 (NULL bedeutet, dass die Person nicht am Test teilgenommen hat). Was ist das Ergebnis von SELECT AVG(Punkte) FROM Test?