Betrachten wir eine Beziehung R(A B C). Hier sind A, B und C als Attribut der Beziehung R bekannt. Wenn die folgende Bedingung auftritt; dann tritt die transitive Abhängigkeit im DBMS auf. Die Bedingungen sind A → B, B → C. Daher wird die Bedingung zu A → C. Mit anderen Worten können wir sagen, dass, wenn Abhängigkeiten durch zwei funktionale Abhängigkeiten hergestellt werden, die funktionalen Abhängigkeiten zu transitiven Abhängigkeiten werden.
Was ist transitive Abhängigkeit?
Betrachten Sie eine Beziehung R(A B C). Hier sind A, B und C als Attribut der Beziehung R bekannt. Wenn die folgende Bedingung auftritt; dann tritt die transitive Abhängigkeit im DBMS auf. Die Bedingungen sind A → B, B → C. Daher wird die Bedingung zu A → C. In transitiven funktionalen Abhängigkeiten ist ein Abhängiges direkt von der Determinante abhängig.
Lassen Sie uns die transitiven Abhängigkeiten anhand des folgenden Beispiels verstehen.
Autor_ID | Autor | Buch | Autor_Nationalität |
---|---|---|---|
A1 | Arundhati Roy | Der Gott der kleinen Dinge | Indien |
A1 | Kiran Desai | Das Erbe des Verlustes | Indien |
A2 | R. K. Narayan | Der Menschenfresser von Malgudy | Indien |
In der obigen Autorentabelle sehen wir das.
Wenn wir uns die oben diskutierten funktionalen Abhängigkeiten genau ansehen, finden wir das folgende Muster.
- A → B und B → C B→C; daher A → CA → C.
- A → Buch, B → Autor B → Autor und C → Autor_Nationalität C→Autor_Nationalität
Angenommen, wir wenden die dritte Normalform (3NF) in der obigen Autorentabelle an. In diesem Fall muss die transitive Abhängigkeit der Autorentabelle entfernt werden, und der Prozess des Entfernens der transitiven Abhängigkeiten der Datenbank wird als Normalisierungsprozess bezeichnet.
Wie vermeide ich transitive Abhängigkeiten?
Schauen wir uns die obige Autorentabelle noch einmal an und sehen, welche Art von Problem bei der Tabellenerstellung auftritt.
Autorentabelle:
Autor_ID | Autor | Buch | Autor_Nationalität |
---|---|---|---|
A1 | Arundhati Roy | Der Gott der kleinen Dinge | Indien |
A1 | Kiran Desai | Das Erbe des Verlustes | Indien |
A2 | R. K. Narayan | Der Menschenfresser von Malgudy | Indien |
Die Datenanomalien (wie Aktualisierungs-, Einfüge- und Löschanomalien) und Inkonsistenzen können durch die Autorentabelle verursacht werden. Wenn die Datenbank zu viel Redundanz aufweist, werden Datenanomalien in den Daten verursacht. Datenanomalien werden auch verursacht, wenn beim Aktualisieren, Löschen und Einfügen neuer Daten Probleme auftreten. Zum Beispiel in der Autorentabelle-
- Wir können keinen neuen Autor hinzufügen, bis wir der Tabelle kein Buch hinzufügen können.
- Wir können den Autor erst löschen, wenn wir das Buch vollständig aus der Datenbank gelöscht haben.
- Wenn wir das Buch „Der Gott der kleinen Dinge“ löschen möchten, werden auch die ID, der Autor und die Nationalität des Autors gelöscht.
Die oben genannten Probleme treten in jeder Beziehung auf, die transitive Abhängigkeiten enthält.
Dritte Normalform durch Entfernen der transitiven Abhängigkeit
Betrachten wir das Autorentabelle mit drei Attributen (Author_ID, Author, Author_Nationality) und versuchen Sie, die transitive Abhängigkeit aus dieser Tabelle zu finden und zu beseitigen,
Autorentabelle:
Autor_ID | Autor | Buch | Autor_Nationalität |
---|---|---|---|
A1 | Arundhati Roy | Der Gott der kleinen Dinge | Indien |
A1 | Kiran Desai | Das Erbe des Verlustes | Indien |
A2 | R. K. Narayan | Der Menschenfresser von Malgudy | Indien |
Die obige Autorentabelle befindet sich nicht in 3NF, da sie eine transitive Abhängigkeit aufweist. Mal sehen, wie
So initialisieren Sie ein Array in Java
- Autor → Autor_Nationalität Autor → Autor_Nationalität
- Autor_ID → Autor
Daher besteht auch die folgende funktionale Abhängigkeit:
- Authir_ID → Author_Nationality bildet ein Muster, das dem oben besprochenen ähnelt.
Um nun die transitive Abhängigkeit zu beseitigen, müssen wir nur noch die Tabelle des Autors so aufteilen, dass Author_ID funktional nicht mehr von Author_Nationality abhängt.
Erstellen wir zwei Tabellen, eine mit nur { Author_ID, Author} und eine andere mit {Author_Nationality}. Die neuen Tabellen werden so aussehen:
Autorentabelle
Autor_ID | Autor |
---|---|
A1 | Der Gott der kleinen Dinge |
A2 | Das Erbe des Verlustes |
A3 | Der Menschenfresser von Malgudy |
Nationalitätstabelle des Autors
Autor | Autor_Nationalität |
---|---|
Arundhati Roy | Indien |
Kiran Desai | Indien |
R. K. Narayan | Indien |
Jetzt enthalten die neue Autorentabelle und die Autorennationalitätstabelle keine transitive Abhängigkeit und die Beziehung befindet sich jetzt in 3NF.