Grundlagen der Datenbanken

Der Primärschlüssel einer Auftragstabelle (AuftragsNr, ArtikelNr, Menge, KundenNr, Kundenname) ist {AuftragsNr, ArtikelNr}, und ihre funktionalen Abhängigkeiten sind {AuftragsNr, ArtikelNr} → Menge, AuftragsNr → KundenNr und KundenNr → Kundenname. Welches ist das richtige Ergebnis, wenn diese Tabelle bis zur dritten Normalform normalisiert wird?

  1. AAuftragsposition(AuftragsNr, ArtikelNr, Menge, KundenNr), Kunde(KundenNr, Kundenname)
  2. BAuftragsposition(AuftragsNr, ArtikelNr, Menge), Auftrag(AuftragsNr, KundenNr), Kunde(KundenNr, Kundenname)
  3. CAuftragsposition(AuftragsNr, ArtikelNr, Menge), Auftrag(AuftragsNr, KundenNr, Kundenname)
Antwort und Erläuterung anzeigen

Antwort: B. Auftragsposition(AuftragsNr, ArtikelNr, Menge), Auftrag(AuftragsNr, KundenNr), Kunde(KundenNr, Kundenname)

Die zweite Normalform ist ein Zustand in erster Normalform, in dem keine Spalte nur von einem Teil des Primärschlüssels abhängt (keine partielle funktionale Abhängigkeit). AuftragsNr → KundenNr ist eine partielle funktionale Abhängigkeit, denn KundenNr wird allein durch AuftragsNr bestimmt, die nur ein Teil des Primärschlüssels ist; die ursprüngliche Tabelle ist also in erster, aber nicht in zweiter Normalform. Werden die durch AuftragsNr bestimmten Spalten in Auftrag(AuftragsNr, KundenNr, Kundenname) ausgelagert, entsteht die zweite Normalform. Die dritte Normalform ist ein Zustand in zweiter Normalform, in dem keine Spalte über eine Nicht-Schlüsselspalte bestimmt wird (keine transitive funktionale Abhängigkeit). In Auftrag bleibt die transitive funktionale Abhängigkeit AuftragsNr → KundenNr → Kundenname bestehen, daher wird auch Kunde(KundenNr, Kundenname) abgetrennt. Die drei Tabellen Auftragsposition(AuftragsNr, ArtikelNr, Menge), Auftrag(AuftragsNr, KundenNr) und Kunde(KundenNr, Kundenname) sind dann in dritter Normalform. Ein Join über AuftragsNr und KundenNr stellt die ursprüngliche Tabelle wieder her.

Dieses Thema üben Zur Themenseite

Weitere Fragen zu Grundlagen der Datenbanken

  1. 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?
  2. In einer Datenbank, die überwiegend zum Lesen und Aggregieren dient, werden normalisierte Tabellen manchmal absichtlich zu einer zusammengeführt, sodass dieselben Daten mehrfach gehalten werden (Denormalisierung). Welche Kombination aus Vorteil und Nachteil dieses Entwurfs ist richtig?
  3. 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?
  4. 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?
  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?