Rozważmy relację R(A B C). Tutaj A, B i C są znane jako atrybut relacji R. Kiedy pojawia się następujący warunek; wówczas w systemie DBMS występuje zależność przechodnia. Warunki to A → B, B → C. Zatem warunek staje się A → C. Innymi słowy, możemy powiedzieć, że gdy zależności są tworzone przez dwie zależności funkcjonalne, wówczas zależności funkcjonalne stają się zależnościami przechodnimi.
Co to jest zależność przechodnia?
Rozważmy relację R(A B C). Tutaj A, B i C są znane jako atrybut relacji R. Kiedy pojawia się następujący warunek; wówczas w systemie DBMS występuje zależność przechodnia. Warunki to A → B, B → C. Zatem warunek staje się A → C. w przechodnich zależnościach funkcjonalnych zależna jest bezpośrednio zależna od wyznacznika.
Przyjrzyjmy się zależnościom przechodnim na poniższym przykładzie.
Autor_ID | Autor | Książka | Autor_Narodowość |
---|---|---|---|
A1 | Arundhati Roy | Bóg małych rzeczy | Indie |
A1 | Kiran Desai | Dziedziczenie straty | Indie |
A2 | R. K. Narayan | Ludożerca z Malgudów | Indie |
W powyższej tabeli autorów mamy to.
Jeśli przyjrzymy się bliżej zależnościom funkcjonalnym omówionym powyżej, znajdziemy następujący wzór.
- A → B i B → C B → C; zatem A → CA → C.
- A → Książka, B → Autor B → Autor i C → Autor_Narodowość C → Autor_Narodowość
Załóżmy, że w powyższej tabeli autora zastosujemy trzecią postać normalną (3NF). W takim przypadku należy usunąć przechodnią zależność tabeli autora, a proces usuwania przechodnich zależności bazy danych nazywany jest procesem normalizacji.
Jak uniknąć zależności przechodnich?
Rozważmy ponownie powyższą tabelę autorów i zobaczmy, jakiego rodzaju problemy pojawiają się podczas tworzenia tabeli.
Tabela autorów:
Autor_ID | Autor | Książka | Autor_Narodowość |
---|---|---|---|
A1 | Arundhati Roy | Bóg małych rzeczy | Indie |
A1 | Kiran Desai | Dziedziczenie straty | Indie |
A2 | R. K. Narayan | Ludożerca z Malgudów | Indie |
Anomalie danych (takie jak anomalie aktualizacji, wstawiania i usuwania) oraz niespójności mogą wynikać z tabeli autorów. Jeśli w bazie danych występuje zbyt duża nadmiarowość, w danych powstają anomalie. Anomalie danych powstają także wtedy, gdy pojawia się problem z aktualizacją, usuwaniem i wstawianiem nowych danych. Na przykład w tabeli autora-
- Nie możemy dodać nowego autora, dopóki nie będziemy mogli dodać książki do tabeli.
- Nie możemy usunąć autora, dopóki nie usuniemy całkowicie książki z bazy.
- Jeśli chcemy usunąć książkę „Bóg rzeczy małych”, identyfikator, autor i narodowość autora również zostaną usunięte.
Powyższe problemy występują w każdej relacji zawierającej zależności przechodnie.
Trzecia postać normalna poprzez usunięcie zależności przechodniej
Rozważmy Tabela autorska z trzema atrybutami (Author_ID, Author, Author_Nationality) i spróbuj znaleźć i wyeliminować zależność przechodnią z tej tabeli,
Tabela autorów:
Autor_ID | Autor | Książka | Autor_Narodowość |
---|---|---|---|
A1 | Arundhati Roy | Bóg małych rzeczy | Indie |
A1 | Kiran Desai | Dziedziczenie straty | Indie |
A2 | R. K. Narayan | Ludożerca z Malgudów | Indie |
Powyższa tabela autora nie znajduje się w 3NF, ponieważ ma zależność przechodnią. Zobaczmy jak
wiek Ankity Lokhande
- Autor → Autor_Narodowość Autor → Autor_Narodowość
- ID_autora → Autor
Dlatego istnieje również następująca zależność funkcjonalna,
- Authir_ID → Author_Nationality tworzy wzór podobny do tego, co omówiliśmy powyżej.
Teraz, aby wyeliminować zależność przechodnią, wystarczy podzielić tabelę autora w taki sposób, aby Author_ID nie był już funkcjonalnie zależny od Author_Nationality.
Utwórzmy dwie tabele, jedną zawierającą tylko { Author_ID, Author} i drugą zawierającą {Author_Nationality}. Nowe tabele będą wyglądać tak,
Tabela autora
Autor_ID | Autor |
---|---|
A1 | Bóg małych rzeczy |
A2 | Dziedziczenie straty |
A3 | Ludożerca z Malgudów |
Tabela narodowości autora
Autor | Autor_Narodowość |
---|---|
Arundhati Roy | Indie |
Kiran Desai | Indie |
R. K. Narayan | Indie |
Teraz nowe tabele autorów i tabele narodowości autorów nie zawierają zależności przechodniej, a relacja jest teraz w 3NF.