Závislosti databázy sú témou, ktorá často zamieňa študentov, ako aj profesionálov v oblasti databáz. Našťastie nie sú také komplikované a možno najlepšie ilustrovať pomocou niekoľkých príkladov. V tomto článku skúmame bežné typy závislostí databáz.
Databázové závislosti / funkčné závislosti
Závislosť sa vyskytuje v databáze, keď informácie uložené v rovnakej databázovej tabuľke jednoznačne určujú iné informácie uložené v rovnakej tabuľke. Môžete to tiež opísať ako vzťah, pri ktorom je hodnota jedného atribútu (alebo množiny atribútov) dostatočná, aby ste v tej istej tabuľke uviedli hodnotu iného atribútu (alebo množiny atribútov).
Povedal, že existuje závislosť medzi atribútmi v tabuľke, je to isté ako tvrdenie, že medzi týmito atribútmi existuje funkčná závislosť. Ak existuje závislosť v databáze tak, že atribút B závisí od atribútu A, napíšete to ako "A -> B".
Napríklad v tabuľke, v ktorej sa uvádzajú charakteristiky zamestnancov vrátane SSN a názvu, možno povedať, že názov je závislý od SSN (alebo SSN -> name), pretože meno zamestnanca môže byť jednoznačne určené z ich SSN. Reverzné vyhlásenie (meno -> SSN) však nie je pravda, pretože viac ako jeden zamestnanec môže mať rovnaké meno, ale rôzne SSN.
Triviálne funkčné závislosti
Funkčná závislosť triviálne nastane, keď opíšeme funkčnú závislosť atribútu na kolekcii atribútov, ktoré obsahujú pôvodný atribút. Napríklad "{A, B} -> B" je triviálna funkčná závislosť, rovnako ako "{name, SSN} -> SSN". Tento typ funkčnej závislosti sa nazýva triviálne, pretože môže byť odvodený zo zdravého rozumu. Je zrejmé, že ak už poznáte hodnotu B, potom hodnota B môže byť jednoznačne určená týmito vedomosťami.
Plne funkčné závislosti
Úplná funkčná závislosť nastane, keď už spĺňate požiadavky na funkčnú závislosť a súbor atribútov na ľavej strane príkazu na funkčnú závislosť nemožno ďalej znížiť. Napríklad "{SSN, age} -> name" je funkčná závislosť, ale nie je to úplná funkčná závislosť, pretože môžete odstrániť vek z ľavej strany výkazu bez ovplyvnenia závislosti.
Transitívne závislosti
Transitívne závislosti sa vyskytujú vtedy, keď existuje nepriamy vzťah, ktorý spôsobuje funkčnú závislosť. Napríklad, "A -> C" je tranzitívna závislosť, ak je to pravda len preto, že pravdivé sú aj "A -> B" a "B -> C".
Viachodnotové závislosti
Závislosť s viacerými hodnotami sa vyskytuje, keď prítomnosť jedného alebo viacerých riadkov v tabuľke znamená prítomnosť jedného alebo viacerých ďalších riadkov v tej istej tabuľke. Predstavte si napríklad automobilovú spoločnosť, ktorá vyrába veľa modelov automobilov, ale vždy robí červené a modré farby každého modelu. Ak máte tabuľku, ktorá obsahuje názov modelu, farbu a rok každého automobilu, ktorý spoločnosť vyrába, existuje v tabuľke viacnásobná závislosť . Ak existuje riadok pre určitý názov modelu a rok v modrej farbe, musí existovať aj podobný riadok zodpovedajúci červenej verzii toho istého auta.
Význam závislostí
Závislosti databázy sú dôležité na pochopenie, pretože poskytujú základné stavebné bloky používané v normalizácii databázy . Napríklad:
- Ak má byť tabuľka v druhej normálnej podobe (2NF) , v tabuľke, ktorá je funkčne závislá od podmnožiny kandidátneho kľúča , nesmie byť žiadny prípad atribútu nepredajného.
- Aby tabuľka bola v tretej normálnej forme (3NF) , každý atribút, ktorý nie je primárne, musí mať na každom kandidátskom kľúči neprenojnú funkčnú závislosť.
- Ak má byť tabuľka v normálnom formáte Boyce-Codd (BCNF) , každá funkčná závislosť (okrem triviálnych závislostí) musí byť na superklike .
- Aby bola tabuľka v štvrtej normálnej podobe (4NF) , nesmie mať žiadne viacnásobné závislosti.