Was ist transitive Abhängigkeit in einer Datenbank?

Eine transitive Abhängigkeit in einer Datenbank ist eine indirekte Beziehung zwischen Werten in derselben Tabelle, die a funktionale Abhängigkeit. Um das zu erreichen Normalisierungsstandard der dritten Normalform (3NF), müssen Sie alle transitiven Abhängigkeiten beseitigen.

Eine transitive Abhängigkeit erfordert naturgemäß drei oder mehr Attribute (oder Datenbankspalten), die eine funktionale Abhängigkeit zwischen ihnen aufweisen, was bedeutet, dass Spalte A in einer Tabelle von Spalte B über eine Zwischenspalte C abhängt. Mal sehen, wie das funktionieren könnte.

Beispiel für eine transitive Abhängigkeit

AUTOREN

Autor_ID Autor Buch Autor_Nationalität
Auth_001 Orson Scott-Karte Enders Spiel Vereinigte Staaten
Auth_001 Orson Scott-Karte Kinder des Geistes Vereinigte Staaten
Auth_002 Margaret Atwood Die Geschichte der Magd Kanada

Im obigen AUTOREN-Beispiel:

  • Buch → Autor:Hier das Buch Attribut bestimmt die Autor Attribut. Wenn Sie den Buchnamen kennen, können Sie den Namen des Autors erfahren. Jedoch,
    Autor bestimmt nicht Buch, weil ein Autor mehrere Bücher schreiben kann. Zum Beispiel, nur weil wir wissen, dass der Autor heißt Orson Scott-Karte, wir kennen den Buchnamen immer noch nicht.
  • Autor → Autor_Nationalität: Ebenso die Autor Attribut bestimmt die Autor_Nationalität, aber nicht umgekehrt – nur weil wir die Nationalität des Autors kennen, heißt das nicht, dass wir den Autor bestimmen können.

Aber diese Tabelle führt eine transitive Abhängigkeit ein:

  • Buch →Autor_Nationalität: Wenn wir den Buchnamen kennen, können wir über die Spalte Autor die Nationalität des Autors ermitteln.

Transitive Abhängigkeiten vermeiden

Um die dritte Normalform sicherzustellen, entfernen wir die transitive Abhängigkeit.

Wir können damit beginnen, indem wir die Buchspalte aus der Autorentabelle entfernen und eine separate Büchertabelle erstellen:

BÜCHER

Buch_ID Buch Autor_ID
Buch_001 Enders Spiel Auth_001
Buch_001 Kinder des Geistes Auth_001
Buch_002 Die Geschichte der Magd Auth_002

AUTOREN

Autor_ID Autor Autor_Nationalität
Auth_001 Orson Scott-Karte Vereinigte Staaten
Auth_002 Margaret Atwood Kanada

Hat das behoben? Untersuchen wir unsere Abhängigkeiten jetzt:

BÜCHER-Tisch:

  • Buch_ID → Buch:Die Buch abhängig von der Buch_ID.
  • Es gibt keine anderen Abhängigkeiten in dieser Tabelle, also sind wir in Ordnung. Beachten Sie, dass der Fremdschlüssel, Autor_ID, verknüpft diese Tabelle über ihren Primärschlüssel mit der Tabelle AUTHORS, Autor_ID. Wir haben eine Beziehung geschaffen, um eine transitive Abhängigkeit zu vermeiden, ein Schlüsseldesign von relationale Datenbanken.

AUTOREN-Tabelle:

  • Autor_ID → Autor: Die Autor abhängig von der Autor_ID.
  • Autor → Autor_Nationalität:Die Nationalität kann vom Autor bestimmt werden.
  • Autor_ID → Autor_Nationalität: Die Staatsangehörigkeit kann aus den Autor_ID durch das Autor Attribut. Wir haben immer noch eine transitive Abhängigkeit.

Wir müssen eine dritte Tabelle hinzufügen, um diese Daten zu normalisieren:

LÄNDER

Country_ID Land
Land_001 Vereinigte Staaten
Land_002 Kanada

AUTOREN

Autor_ID Autor Country_ID
Auth_001 Orson Scott-Karte Land_001
Auth_002 Margaret Atwood Land_002

Jetzt haben wir drei Tabellen, die von fremde Schlüssel um zwischen den Tabellen zu verlinken:

  • Der Fremdschlüssel der BOOK-Tabelle, Autor_ID, verknüpft ein Buch mit einem Autor in der Tabelle AUTHORS.
  • Der Fremdschlüssel der Tabelle AUTHORS, Country_ID, verknüpft einen Autor mit einem Land in der Tabelle COUNTRIES.
  • Die Tabelle COUNTRIES hat keinen Fremdschlüssel, da in diesem Design keine Verknüpfung mit einer anderen Tabelle erforderlich ist.

Warum transitive Abhängigkeiten ein schlechtes Datenbankdesign sind

Welchen Wert hat es, transitive Abhängigkeiten zu vermeiden, um 3NF sicherzustellen? Betrachten wir unsere erste Tabelle noch einmal und sehen wir uns die Probleme an, die sie verursacht:

AUTOREN

Autor_ID Autor Buch Autor_Nationalität
Auth_001 Orson Scott-Karte Enders Spiel Vereinigte Staaten
Auth_001 Orson Scott-Karte Kinder des Geistes Vereinigte Staaten
Auth_002 Margaret Atwood Die Geschichte der Magd Kanada

Diese Art von Design kann zu Datenanomalien und Inkonsistenzen beitragen, zum Beispiel:

  • Wenn Sie die beiden Bücher gelöscht haben Kinder des Geistes und Enders Spiel, würden Sie den Autor "Orson Scott Card" und seine Nationalität komplett aus der Datenbank löschen.
  • Sie können der Datenbank keinen neuen Autor hinzufügen, es sei denn, Sie fügen auch ein Buch hinzu. Was ist, wenn der Autor noch unveröffentlicht ist oder Sie den Namen eines von ihm verfassten Buches nicht kennen?
  • Wenn "Orson Scott Card" seine Staatsbürgerschaft geändert hat, müssten Sie seine Staatsbürgerschaft in allen Aufzeichnungen ändern, in denen er auftaucht. Mehrere Datensätze mit demselben Autor können zu ungenauen Daten führen. Was ist, wenn die Dateneingabeperson nicht erkennt, dass für eine Person mehrere Datensätze vorhanden sind, und die Daten nur in einem Datensatz ändert?
  • Sie können ein Buch wie. nicht löschen Die Geschichte der Magd ohne auch den Autor komplett zu löschen.

Häufig gestellte Fragen

  • Welche Arten von Abhängigkeiten gibt es in einem Datenbankverwaltungssystem? Es gibt vier Arten von Datenbankabhängigkeiten: triviale funktionale Abhängigkeiten, vollständige funktionale Abhängigkeiten, transitive Abhängigkeiten und mehrwertige Abhängigkeiten.
  • Wie unterscheidet sich die funktionale Abhängigkeit von der transitiven Abhängigkeit? In der Datenbankverwaltung ist Abhängigkeit eine Beziehung zwischen zwei oder mehr Attributen (Spalten). Während die funktionale Abhängigkeit eine Assoziation zwischen zwei Attributen derselben Beziehung ist, tritt eine transitive Abhängigkeit auf, wenn eine indirekte Beziehung eine funktionale Abhängigkeit verursacht.