Skip to main content

Transitive Abhängigkeit in einer Datenbank

transitive und intransitive Verben | deutsche Grammatik | Deutsch | Lehrerschmidt (April 2025)

transitive und intransitive Verben | deutsche Grammatik | Deutsch | Lehrerschmidt (April 2025)
Anonim

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

Eine transitive Abhängigkeit erfordert naturgemäß drei oder mehr Attribute (oder Datenbankspalten), zwischen denen eine funktionale Abhängigkeit besteht. Dies bedeutet, dass Spalte A in einer Tabelle über eine Zwischenspalte C auf Spalte B basiert.

Mal sehen, wie das funktionieren könnte.

Beispiel für eine transitive Abhängigkeit

AUTOREN

Author_IDAutorBuchAutor_Nationalität
Auth_001Orson Scott CardEnders SpielVereinigte Staaten
Auth_001Orson Scott CardEnders SpielVereinigte Staaten
Auth_002Margaret AtwoodDie Geschichte der DienstmagdKanada

Im obigen AUTHORS-Beispiel:

  • Buch → Autor : Hier die Buch Attribut bestimmt das Autor Attribut. Wenn Sie den Namen des Buches kennen, können Sie den Namen des Autors erfahren. Jedoch, Autor bestimmt nicht Buch , weil ein Autor mehrere Bücher schreiben kann. Nur weil wir den Namen des Autors Orson Scott Card kennen, kennen wir den Namen des Buches immer noch nicht.
  • Autor → Autor_Nationalität : Ebenso die Autor Attribut bestimmt das Autor_Nationalität , aber nicht umgekehrt; Nur weil wir die Nationalität kennen, heißt das nicht, dass wir den Autor bestimmen können.

Diese Tabelle führt jedoch eine transitive Abhängigkeit ein:

  • Buch → Autor_Nationalität: Wenn wir den Namen des Buches kennen, können wir die Nationalität über die Spalte Autor bestimmen.

Transitive Abhängigkeiten vermeiden

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

Wir können anfangen, die Buchspalte aus der Authors-Tabelle zu entfernen und eine separate Books-Tabelle zu erstellen:

BÜCHER

Book_IDBuchAuthor_ID
Book_001Enders SpielAuth_001
Book_001Kinder des GeistesAuth_001
Book_002Die Geschichte der DienstmagdAuth_002

AUTOREN

Author_IDAutorAutor_Nationalität
Auth_001Orson Scott CardVereinigte Staaten
Auth_002Margaret AtwoodKanada

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

BÜCHER Tisch:

  • Book_ID → Buch: Das Buch abhängig von der Book_ID .
  • Es gibt keine weiteren Abhängigkeiten in dieser Tabelle, also sind wir in Ordnung. Beachten Sie, dass der Fremdschlüssel Author_ID Verknüpft diese Tabelle mit der AUTHORS-Tabelle über ihren Primärschlüssel Author_ID . Wir haben eine Beziehung erstellt, um eine transitive Abhängigkeit, ein Schlüsseldesign relationaler Datenbanken, zu vermeiden.

AUTHORS Tabelle:

  • Author_ID → Autor: Das Autor abhängig von der Author_ID .
  • Autor → Autor_Nationalität: Die Nationalität kann vom Autor bestimmt werden.
  • Author_ID → Autor_Nationalität: Die Nationalität lässt sich aus dem Author_ID durch die 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_IDLand
Coun_001Vereinigte Staaten
Coun_002Kanada

AUTOREN

Author_IDAutorCountry_ID
Auth_001Orson Scott CardCoun_001
Auth_002Margaret AtwoodCoun_002

Jetzt haben wir drei Tabellen, die Fremdschlüssel verwenden, um die Tabellen miteinander zu verknüpfen:

  • Der Fremdschlüssel der BOOK-Tabelle Author_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 keine Verknüpfung zu einer anderen Tabelle in diesem Entwurf erforderlich ist.

Warum transitive Abhängigkeiten ein fehlerhafter Datenbankentwurf sind

Welchen Wert hat das Vermeiden von transitiven Abhängigkeiten, um 3NF zu gewährleisten? Lassen Sie uns noch einmal unsere erste Tabelle betrachten und die Probleme sehen, die dadurch entstehen:

AUTOREN

Author_IDAutorBuchAutor_Nationalität
Auth_001Orson Scott CardEnders SpielVereinigte Staaten
Auth_001Orson Scott CardKinder des GeistesVereinigte Staaten
Auth_002Margaret AtwoodDie Geschichte der DienstmagdKanada

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

  • Wenn Sie die beiden Bücher "Children of the Mind" und "Ender's Game" gelöscht haben, würden Sie den Autor "Orson Scott Card" und seine Nationalität vollständig 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 nicht veröffentlicht ist oder Sie den Namen eines Buches nicht kennen, das er verfasst hat?
  • Wenn "Orson Scott Card" seine Staatsbürgerschaft geändert hat, müssen Sie sie in allen Datensätzen ändern, in denen er erscheint. Wenn Sie mehrere Datensätze mit demselben Autor haben, kann dies zu ungenauen Daten führen.
  • Sie können ein Buch wie "The Handmaid's Tale" nicht löschen, ohne den Autor vollständig zu löschen.

Dies sind nur einige Gründe, warum Normalisierung und das Vermeiden von transitiven Abhängigkeiten Daten schützen und Konsistenz gewährleisten.