Grundlagen der Datenbanken

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?

  1. ASie ist in zweiter, aber nicht in dritter Normalform
  2. BSie ist in erster, aber nicht in zweiter Normalform
  3. CSie ist in dritter Normalform
Antwort und Erläuterung anzeigen

Antwort: A. Sie ist in zweiter, aber nicht in dritter Normalform

Jede Spalte enthält einen einzelnen, nicht wiederholten Wert, die Tabelle ist also in erster Normalform. Da der Primärschlüssel nur aus der einen Spalte MitarbeiterNr besteht, kann keine partielle funktionale Abhängigkeit von einem Teil des Schlüssels auftreten; sie ist also auch in zweiter Normalform. Abteilungsname wird jedoch über Abteilungscode bestimmt, der kein Primärschlüssel ist, wie in MitarbeiterNr → Abteilungscode → Abteilungsname; wegen dieser transitiven funktionalen Abhängigkeit ist die Tabelle nicht in dritter Normalform. So wie sie ist, wird der Abteilungsname in der Zeile jedes Mitarbeiters derselben Abteilung wiederholt, und die Umbenennung einer Abteilung erfordert das Ändern vieler Zeilen. Wird eine Abteilungstabelle (Abteilungscode, Abteilungsname) abgetrennt und in der Mitarbeitertabelle nur Abteilungscode belassen, ergibt sich die dritte Normalform. Abteilungscode in der Mitarbeitertabelle wird dann zu einem Fremdschlüssel, der auf die Abteilungstabelle verweist.

Dieses Thema üben Zur Themenseite

Weitere Fragen zu Grundlagen der Datenbanken

  1. 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?
  2. 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?
  3. 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?
  4. 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?
  5. 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?