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.
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.