Grundlagen der Datenbanken

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?

  1. AEine neue Belegungstabelle anlegen, die StudentNr und KursNr als Fremdschlüssel enthält
  2. BDer Studierendentabelle eine Spalte KursNr hinzufügen
  3. CDer Kurstabelle eine Spalte StudentNr hinzufügen
Antwort und Erläuterung anzeigen

Antwort: A. Eine neue Belegungstabelle anlegen, die StudentNr und KursNr als Fremdschlüssel enthält

Ein E-R-Diagramm stellt die in einer Datenbank verwalteten Objekte (Entitäten) und die Beziehungen zwischen ihnen grafisch dar, und jede Beziehung hat eine Multiplizität (Kardinalität) wie eins zu eins, eins zu viele oder viele zu viele. Eine Eins-zu-viele-Beziehung lässt sich darstellen, indem die Tabelle auf der Viele-Seite den Primärschlüssel der Eins-Seite als Fremdschlüssel erhält (etwa eine Spalte Abteilungscode in der Mitarbeitertabelle). Eine Viele-zu-viele-Beziehung lässt sich jedoch nicht durch eine zusätzliche Spalte in einer der beiden Tabellen abbilden, denn damit ließe sich nur ein Kurs pro Studierendem (oder ein Studierender pro Kurs) erfassen. Stattdessen wird eine Belegungstabelle (eine assoziative Entität) mit StudentNr und KursNr als Fremdschlüsseln dazwischengeschaltet, die die Beziehung in zwei Eins-zu-viele-Beziehungen zerlegt: Studierende zu Belegung und Kurs zu Belegung. Der Primärschlüssel der Belegungstabelle ist üblicherweise die Kombination aus StudentNr und KursNr.

Dieses Thema üben Zur Themenseite

Weitere Fragen zu Grundlagen der Datenbanken

  1. In einer Kontentabelle wird eine Transaktion gestartet, und ein UPDATE, das vom Saldo von Konto A 300 abzieht, sowie ein UPDATE, das zum Saldo von Konto B 300 addiert, werden ausgeführt. Danach wird statt COMMIT ein ROLLBACK ausgeführt. Was geschieht mit der Kontentabelle?
  2. 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?
  3. Der Bestand eines Produkts in einer Lagertabelle ist 10. Transaktion T1 liest den Bestand und schreibt den Wert minus 3 zurück, T2 liest den Bestand und schreibt den Wert minus 5 zurück. Wie hoch ist der Endbestand, wenn beide ohne Sperren in der Reihenfolge T1 liest, T2 liest, T1 schreibt, T2 schreibt ablaufen?
  4. Welche Aussage beschreibt unter den Problemen, die bei gleichzeitig laufenden Transaktionen auftreten, einen Dirty Read richtig?
  5. Transaktion T1 führte SELECT COUNT(*) FROM Bestellung WHERE Betrag >= 1000 aus und erhielt 8. Unmittelbar danach fügte T2 eine Bestellzeile mit einem Betrag von 2000 per INSERT ein und schrieb sie fest. Als T1 dieselbe SELECT-Anweisung erneut ausführte, erhielt sie 9. Um welches Phänomen handelt es sich?