logo

Transitieve afhankelijkheid in DBMS

Laten we een relatie R(A B C) bekijken. Hier staan ​​A, B en C bekend als het attribuut van de relatie R. Wanneer de volgende voorwaarde zich voordoet; dan treedt de transitieve afhankelijkheid op in het DBMS. De voorwaarden zijn A → B, B → C. Daarom wordt de voorwaarde A → C. Met andere woorden, we kunnen zeggen dat wanneer afhankelijkheden worden gemaakt door twee functionele afhankelijkheden, de functionele afhankelijkheden transitieve afhankelijkheden worden.

Wat is transitieve afhankelijkheid?

Beschouw een relatie R(A B C). Hier staan ​​A, B en C bekend als het attribuut van de relatie R. Wanneer de volgende voorwaarde zich voordoet; dan treedt de transitieve afhankelijkheid op in het DBMS. De voorwaarden zijn A → B, B → C. Daarom wordt de voorwaarde A → C. Bij transitieve functionele afhankelijkheden is een afhankelijke direct afhankelijk van de determinant.

Laten we de transitieve afhankelijkheden begrijpen met behulp van het volgende voorbeeld.

Auteur_ID Auteur Boek Auteur_Nationaliteit
A1 Arundhati Roy De God van kleine dingen Indië
A1 Kiran Desai De erfenis van verlies Indië
A2 RK Narayan De menseneter van Malgudy Indië

In de bovenstaande auteurstabel zien we dat.

    Boek → Auteur:Hier wordt het auteursattribuut bepaald door het boekattribuut. Als iemand de naam van het boek kent, kan hij/zij ook de naam van de auteur achterhalen.Auteur → Auteur_Nationaliteit:Als iemand de naam van de auteur kent, kan hij ook de nationaliteit van de auteur achterhalen.Boek → Auteur_Nationaliteit: Als iemand de naam van het boek kent, kan hij ook de nationaliteit van de auteur achterhalen.

Als we goed kijken naar de hierboven besproken functionele afhankelijkheden, vinden we het volgende patroon.

  • A → B en B → C B → C; daarom A → CA → C.
  • A → Boek, B → Auteur B → Auteur en C → Auteur_Nationaliteit C → Auteur_Nationaliteit

Stel dat we de derde normaalvorm (3NF) toepassen in de bovenstaande auteurstabel. In dat geval moet de transitieve afhankelijkheid van de auteurstabel worden verwijderd, en het proces van het verwijderen van de transitieve afhankelijkheden van de database staat bekend als het normalisatieproces.

Hoe vermijd je transitieve afhankelijkheden?

Laten we de bovenstaande auteurstabel nog eens bekijken en kijken welk type probleem zich voordoet tijdens het maken van de tabel.

Auteurstabel:

Auteur_ID Auteur Boek Auteur_Nationaliteit
A1 Arundhati Roy De God van kleine dingen Indië
A1 Kiran Desai De erfenis van verlies Indië
A2 RK Narayan De menseneter van Malgudy Indië

De gegevensafwijkingen (zoals afwijkingen bij het bijwerken, invoegen en verwijderen) en inconsistenties kunnen worden bijgedragen door de auteurstabel. Wanneer er te veel redundantie in de database is, worden gegevensafwijkingen in de gegevens veroorzaakt. Gegevensafwijkingen worden ook veroorzaakt als er een probleem is met het bijwerken, verwijderen en invoegen van nieuwe gegevens. In de auteurstabel bijvoorbeeld

  • We kunnen pas een nieuwe auteur toevoegen als we geen boek aan de tabel kunnen toevoegen.
  • We kunnen de auteur pas verwijderen als we het boek volledig uit de database hebben verwijderd.
  • Als we het boek 'The God of Small Things' willen verwijderen, worden ook de identiteit, de auteur en de nationaliteit van de auteur verwijderd.

De bovenstaande problemen komen voor in elke relatie die transitieve afhankelijkheden bevat.

Derde normaalvorm door transitieve afhankelijkheid te verwijderen

Laten we eens kijken naar de Auteur tabel met drie attributen (Author_ID, Author, Author_Nationality) en probeer de transitieve afhankelijkheid uit deze tabel te vinden en te elimineren,

Auteurstabel:

Auteur_ID Auteur Boek Auteur_Nationaliteit
A1 Arundhati Roy De God van kleine dingen Indië
A1 Kiran Desai De erfenis van verlies Indië
A2 RK Narayan De menseneter van Malgudy Indië

De bovenstaande auteurstabel bevindt zich niet in 3NF omdat deze een transitieve afhankelijkheid heeft. Laten we kijken hoe

Python rstrip
  • Auteur → Auteur_Nationaliteit Auteur → Auteur_Nationaliteit
  • Auteur_ID → Auteur

Daarom bestaat er ook de volgende functionele afhankelijkheid:

  • Authir_ID → Auteur_Nationaliteit vormt een patroon dat lijkt op wat we hierboven hebben besproken.

Om de transitieve afhankelijkheid te elimineren, hoeven we alleen maar de tabel van de auteur op zo'n manier te splitsen dat Author_ID niet langer functioneel afhankelijk is van Author_Nationality.

Laten we twee tabellen maken, één met alleen { Author_ID, Author} en een andere met {Author_Nationality}. De nieuwe tabellen zien er als volgt uit:

Auteurstabel

Auteur_ID Auteur
A1 De God van kleine dingen
A2 De erfenis van verlies
A3 De menseneter van Malgudy

Auteur Nationaliteitstabel

Auteur Auteur_Nationaliteit
Arundhati Roy Indië
Kiran Desai Indië
RK Narayan Indië

Nu bevatten de nieuwe auteurstabel en auteursnationaliteitstabel geen transitieve afhankelijkheid en bevindt de relatie zich nu in 3NF.