Skip to main content

Átmeneti függőség egy adatbázisban

"Mi az az Orbán? Fogyatékos vagyok kaptam utalványt" - Thug Life Hungary (Április 2025)

"Mi az az Orbán? Fogyatékos vagyok kaptam utalványt" - Thug Life Hungary (Április 2025)
Anonim

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_IDSzerzőKönyvAuthor_Nationality
Auth_001Orson Scott CardVégjátékEgyesült Államok
Auth_001Orson Scott CardVégjátékEgyesült Államok
Auth_002Margaret AtwoodA Szobalány történeteKanada

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_IDKönyvAuthor_ID
Book_001VégjátékAuth_001
Book_001Az elme gyermekeiAuth_001
Book_002A Szobalány történeteAuth_002

SZERZŐI

Author_IDSzerzőAuthor_Nationality
Auth_001Orson Scott CardEgyesült Államok
Auth_002Margaret AtwoodKanada

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_IDOrszág
Coun_001Egyesült Államok
Coun_002Kanada

SZERZŐI

Author_IDSzerzőCountry_ID
Auth_001Orson Scott CardCoun_001
Auth_002Margaret AtwoodCoun_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_IDSzerzőKönyvAuthor_Nationality
Auth_001Orson Scott CardVégjátékEgyesült Államok
Auth_001Orson Scott CardAz elme gyermekeiEgyesült Államok
Auth_002Margaret AtwoodA Szobalány történeteKanada

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.