A relációs adatbázisban függőség lép fel, ha az ugyanabban az adatbázistáblában tárolt információ egyedileg meghatároz más, ugyanabban a táblában tárolt információkat. Többértékű függőségről akkor beszélünk, ha egy vagy több sor jelenléte egy táblázatban egy vagy több másik sor jelenlétét is magában foglalja ugyanabban a táblában. Másképpen fogalmazva, egy táblázat két attribútuma (vagy oszlopa) független egymástól, de mindkettő egy harmadik attribútumtól függ.
A többértékű függőség megakadályozza a normalizálási szabvány negyedik normálformáját. A relációs adatbázisok öt normál formát követnek, amelyek a rekordtervezés iránymutatásait képviselik. Megakadályozzák a frissítési anomáliákat és az adatok inkonzisztenciáit. A negyedik normál forma az adatbázisban lévő több az egyhez kapcsolatokkal foglalkozik.
Funkcionális függőség kontra többértékű függőség
A többértékű függőségek megértéséhez hasznos újra átgondolni, mi is az a funkcionális függőség.
Ha egy X attribútum egyedileg határoz meg egy Y attribútumot, akkor Y funkcionálisan függ X-től. Ez X -> Y-ként van írva. Például az alábbi Diákok táblázatban a Student_Name határozza meg a szakot:
Student_Name | Major |
---|---|
Ravi | Művészettörténet |
Beth | Kémia |
Ez a funkcionális függőség a következőképpen írható fel: Student_Name -> Major. Minden Student_Name pontosan egy szakot határoz meg, és nem többet.
Ha azt szeretné, hogy az adatbázis azt is nyomon kövesse, hogy ezek a diákok milyen sportokat űznek, akkor azt gondolhatja, hogy ennek legegyszerűbb módja, ha hozzáad egy másik oszlopot Sport címmel:
Student_Name | Major | Sport |
---|---|---|
Ravi | Művészettörténet | Foci |
Ravi | Művészettörténet | Röplabda |
Ravi | Művészettörténet | Tenisz |
Beth | Kémia | Tenisz |
Beth | Kémia | Foci |
A probléma az, hogy Ravi és Beth is többféle sportot űz. Minden további sporthoz új sort kell hozzáadni.
Ez a táblázat többértékű függőséget vezetett be, mivel a szak és a sport független egymástól, de mindkettő a hallgatótól függ. Ez egy egyszerű példa és könnyen azonosítható, de a többértékű függőség problémát jelenthet egy nagy, összetett adatbázisban.
Egy többértékű függőséget írunk X ->-> Y. Ebben az esetben:
Diák_neve ->-> Jor
Hallgató_neve34 -2-6-434 > Sport
Ez a következőképpen jelenik meg: "A diák_neve több szempontból is meghatározza a szakot" és a "Student_Name többszörösen meghatározza a sportot".
A többértékű függőséghez mindig legalább három attribútum szükséges, mert legalább két olyan attribútumból áll, amelyek egy harmadiktól függenek.
Többértékű függőség és normalizálás
A többértékű függőséggel rendelkező tábla sérti a negyedik normálforma normalizálási szabványát, mert szükségtelen redundanciákat hoz létre, és inkonzisztens adatokhoz vezethet. Ahhoz, hogy ezt 4NF-re emeljük, ezt az információt két táblázatra kell bontani.
Az alábbi táblázatban a Student_Name -> Major funkcionális függősége van, és nincsenek többértékű függőségek:
Student_Name | Major |
---|---|
Ravi | Művészettörténet |
Ravi | Művészettörténet |
Ravi | Művészettörténet |
Beth | Kémia |
Beth | Kémia |
Bár ennek a táblázatnak a Student_Name egyetlen funkcionális függősége is van -> Sport:
Student_Name | Sport |
---|---|
Ravi | Foci |
Ravi | Röplabda |
Ravi | Tenisz |
Beth | Tenisz |
Beth | Foci |
A normalizálást gyakran úgy hajtják végre, hogy leegyszerűsítik az összetett táblázatokat, így azok egyetlen ötlethez vagy témához kapcsolódó információkat tartalmaznak, ahelyett, hogy egyetlen táblázatot túl sok különböző információt tartalmaznának.