Panagrinėkime santykį R(A B C). Čia A, B ir C yra žinomi kaip santykio R atributas. Kai atsiranda ši sąlyga; tada DBVS atsiranda pereinamoji priklausomybė. Sąlygos yra A → B, B → C. Todėl sąlyga tampa A → C. Kitaip tariant, galime sakyti, kad kai priklausomybes sudaro dvi funkcinės priklausomybės, tada funkcinės priklausomybės tampa pereinamomis.
Kas yra pereinamoji priklausomybė?
Apsvarstykite santykį R(A B C). Čia A, B ir C yra žinomi kaip santykio R atributas. Kai atsiranda ši sąlyga; tada DBVS atsiranda pereinamoji priklausomybė. Sąlygos yra A → B, B → C. Todėl sąlyga tampa A → C. pereinamosiose funkcinėse priklausomybėse, priklausomasis yra tiesiogiai priklausomas nuo determinanto.
Supraskime pereinamąsias priklausomybes naudodami šį pavyzdį.
Autoriaus_ID | Autorius | Knyga | Autorius_Tautybė |
---|---|---|---|
A1 | Arundhati Roy | Mažų dalykų Dievas | Indija |
A1 | Kiranas Desai | Praradimo paveldėjimas | Indija |
A2 | R. K. Narajanas | Malgudžio žmogus valgytojas | Indija |
Aukščiau pateiktoje autoriaus lentelėje mes tai gauname.
Jei atidžiai pažvelgsime į aukščiau aptartas funkcines priklausomybes, rastume tokį modelį.
- A → B ir B → C B → C; todėl A → CA → C.
- A → Knyga, B → Autorius B → Autorius ir C → Autoriaus_tautybė C → Autoriaus_tautybė
Tarkime, kad aukščiau pateiktoje autoriaus lentelėje taikome trečiąją normaliąją formą (3NF). Tokiu atveju pereinamoji autoriaus lentelės priklausomybė turi būti pašalinta, o duomenų bazės pereinamųjų priklausomybių pašalinimo procesas vadinamas normalizavimo procesu.
Kaip išvengti pereinamųjų priklausomybių?
Dar kartą apsvarstykime aukščiau pateiktą autoriaus lentelę ir pažiūrėkime, kokios problemos kyla kuriant lentelę.
Autorių lentelė:
Autoriaus_ID | Autorius | Knyga | Autorius_Tautybė |
---|---|---|---|
A1 | Arundhati Roy | Mažų dalykų Dievas | Indija |
A1 | Kiranas Desai | Praradimo paveldėjimas | Indija |
A2 | R. K. Narajanas | Malgudžio žmogus valgytojas | Indija |
Duomenų anomalijas (pvz., atnaujinimo, įterpimo ir ištrynimo anomalijas) ir nenuoseklumą gali sukelti autoriaus lentelė. Kai duomenų bazėje yra per daug dubliavimo, atsiranda duomenų anomalijas. Duomenų anomalijos taip pat atsiranda, kai kyla problemų atnaujinant, ištrinant ir įterpiant naujus duomenis. Pavyzdžiui, autoriaus lentelėje-
- Negalime pridėti naujo autoriaus, kol negalime pridėti knygos prie lentelės.
- Negalime ištrinti autoriaus, kol visiškai neištrinsime knygos iš duomenų bazės.
- Jei norime ištrinti knygą „Smulkių dalykų Dievas“, taip pat bus ištrintas autoriaus ID, autorius ir tautybė.
Pirmiau nurodytos problemos kyla bet kuriame santykyje, kuriame yra pereinamųjų priklausomybių.
Trečioji normali forma pašalinus pereinamąją priklausomybę
Apsvarstykime Autorių lentelė su trimis atributais (Author_ID, Author, Author_Nationalality) ir pabandykite rasti ir pašalinti pereinamąją priklausomybę iš šios lentelės,
Autorių lentelė:
Autoriaus_ID | Autorius | Knyga | Autorius_Tautybė |
---|---|---|---|
A1 | Arundhati Roy | Mažų dalykų Dievas | Indija |
A1 | Kiranas Desai | Praradimo paveldėjimas | Indija |
A2 | R. K. Narajanas | Malgudžio žmogus valgytojas | Indija |
Aukščiau pateiktos autoriaus lentelės nėra 3NF, nes ji turi pereinamąją priklausomybę. Pažiūrėkime kaip
... Java
- Autorius → Autorius_Tautybė Autorius → Autorius_Tautybė
- Autoriaus_ID → Autorius
Todėl taip pat egzistuoja tokia funkcinė priklausomybė:
- Authir_ID → Author_Nationality formuoja modelį, panašų į tai, ką aptarėme aukščiau.
Dabar, kad pašalintume pereinamąją priklausomybę, viskas, ką turime padaryti, tai padalinti autoriaus lentelę taip, kad Autoriaus_ID funkciškai nebepriklausytų nuo Autoriaus_Nacionalumo.
Sukurkime dvi lenteles: vienoje yra tik { Author_ID, Author}, o kitoje - {Author_Nationality}. Naujos lentelės atrodys taip,
Autorių lentelė
Autoriaus_ID | Autorius |
---|---|
A1 | Mažų dalykų Dievas |
A2 | Praradimo paveldėjimas |
A3 | Malgudžio žmogus valgytojas |
Autoriaus tautybės lentelė
Autorius | Autorius_Tautybė |
---|---|
Arundhati Roy | Indija |
Kiranas Desai | Indija |
R. K. Narajanas | Indija |
Dabar naujoje autoriaus lentelėje ir autoriaus tautybės lentelėje nėra pereinamosios priklausomybės, o ryšys dabar yra 3NF.