Az adatbázisban lévő átmeneti függőség közvetett kapcsolat az ugyanabban a táblázatban szereplő értékek között, amely funkcionális függést okoz. A Harmadik Normál Forma (3NF) normalizációs szabványának eléréséhez el kell távolítanunk minden átmeneti függõséget.
Az átmeneti függőség természeténél fogva három vagy több olyan attribútumot (vagy adatbázis oszlopot) igényel, amelyek funkcionális függőséget tartalmaznak közöttük, ami azt jelenti, hogy egy A oszlop egy B oszlopra támaszkodik egy közbülső C oszlopon keresztül.
Lássuk, hogyan működik ez.
Átmeneti függőségi példa
SZERZŐI
Author_ID | Szerző | Könyv | Author_Nationality |
---|---|---|---|
Auth_001 | Orson Scott Card | Végjáték | Egyesült Államok |
Auth_001 | Orson Scott Card | Végjáték | Egyesült Államok |
Auth_002 | Margaret Atwood | A Szobalány története | Kanada |
A fenti AUTHORS példában:
- Könyv → Szerző : Itt a Könyv attribútum határozza meg a Szerző tulajdonság. Ha ismeri a könyv nevét, megtudhatja a szerző nevét. Azonban, Szerző nem határozza meg Könyv , mert egy szerző több könyvet is írhat. Például, mert ismerjük a szerző nevét, Orson Scott-kártyát, még mindig nem ismerjük a könyv nevét.
- Szerző → Author_Nationality : Hasonlóképpen, a Szerző attribútum határozza meg a Author_Nationality , de nem fordítva; csak azért, mert tudjuk, hogy az állampolgárság nem jelenti azt, hogy meg tudjuk határozni a szerzőt.
De ez a táblázat egy átmeneti függést vezet be:
- Könyv → Author_Nationality: Ha ismerjük a könyv nevét, meghatározhatjuk az állampolgárságot a Szerző oszlopon keresztül.
A tranzit függőség elkerülése
A harmadik normál forma biztosítása érdekében távolítsuk el a tranzit függőséget.
Elkezdhetjük a Könyv oszlop eltávolítását a Szerzők táblázatban, és létrehozhatunk egy külön Könyvtáblázatot:
KÖNYVEK
Book_ID | Könyv | Author_ID |
---|---|---|
Book_001 | Végjáték | Auth_001 |
Book_001 | Az elme gyermekei | Auth_001 |
Book_002 | A Szobalány története | Auth_002 |
SZERZŐI
Author_ID | Szerző | Author_Nationality |
---|---|---|
Auth_001 | Orson Scott Card | Egyesült Államok |
Auth_002 | Margaret Atwood | Kanada |
Ezt megoldotta? Vizsgáljuk meg függőségünket most:
KÖNYVEK tábla:
- Book_ID → Könyv: A Könyv attól függ Book_ID .
- Ebben a táblázatban nincs más függőség, így rendben vagyunk. Vegye figyelembe, hogy az idegen kulcs Author_ID ezt a táblázatot az AUTHORS táblához kapcsolja az elsődleges kulcson keresztül Author_ID . Létrehoztunk egy kapcsolatot, hogy elkerüljük a tranzit függőséget, a relációs adatbázisok kulcsfontosságú kialakítását.
AUTHORS táblázat:
- Author_ID → Szerző: A Szerző attól függ Author_ID .
- Szerző → Author_Nationality: Az állampolgárságot a szerző határozhatja meg.
- Author_ID → Author_Nationality: Az állampolgárságot a Author_ID keresztül Szerző tulajdonság. Még mindig van egy átmeneti függőség.
Ehhez egy harmadik táblát kell hozzáadnunk ahhoz, hogy normalizáljuk ezeket az adatokat:
ORSZÁGOK
Country_ID | Ország |
---|---|
Coun_001 | Egyesült Államok |
Coun_002 | Kanada |
SZERZŐI
Author_ID | Szerző | Country_ID |
---|---|---|
Auth_001 | Orson Scott Card | Coun_001 |
Auth_002 | Margaret Atwood | Coun_002 |
Most három asztalunk van, idegen kulcsok használatával a táblák közötti összeköttetéshez:
- A KÖNYV tábla külföldi kulcsát Author_ID könyvet köti össze egy szerzővel a AUTHORS táblázatban.
- A AUTHORS tábla külföldi kulcs Country_ID egy szerzőt köti össze egy országgal az ORSZÁGOK táblázatban.
- Az COUNTRIES tábla nem tartalmaz idegen kulcsot, mert nincs szükség arra, hogy egy másik táblázathoz kapcsolódjon ebben a formában.
A tranzit függőségek miért rossz adatbázis-tervezés
Mennyire értékeli a tranzit függőség elkerülését a 3NF biztosításához? Tekintsük újra az első táblázatot, és tekintse meg az általa létrehozott problémákat:
SZERZŐI
Author_ID | Szerző | Könyv | Author_Nationality |
---|---|---|---|
Auth_001 | Orson Scott Card | Végjáték | Egyesült Államok |
Auth_001 | Orson Scott Card | Az elme gyermekei | Egyesült Államok |
Auth_002 | Margaret Atwood | A Szobalány története | Kanada |
Ez a fajta kialakítás hozzájárulhat az adatokkal kapcsolatos anomáliákhoz és következetlenségekhez, például:
- Ha törölte a "Children of the Mind" és "Ender's Game" két könyvet, törölné az "Orson Scott Card" szerzőjét és állampolgárságát teljesen az adatbázisból.
- Nem adhat hozzá új szerzőt az adatbázisba, hacsak nem ad hozzá egy könyvet; mi van, ha a szerző még nem jelent meg, vagy nem ismeri a könyve nevét?
- Ha az "Orson Scott-kártya" megváltoztatta állampolgárságát, meg kell változtatnia minden olyan nyilvántartásban, amelyben megjelenik. Ha ugyanaz a szerző több rekordot is tartalmaz, akkor pontatlan adatokhoz vezethet: mi van akkor, ha az adatbeviteli személy nem veszi észre, hogy több rekord van rá, és csak egy rekordban módosítja az adatokat?
- Nem törölhet egy olyan könyvet, mint a "The Handmaid's Tale", anélkül, hogy teljesen törölné a szerzőt.
Ezek csak néhány oka annak, hogy a normalizáció, és a tranzitális függőség elkerülése, az adatok védelme és a következetesség biztosítása.