Skip to main content

Sprievodca pre pochopenie databázových závislostí

Anonim

Závislosť je obmedzenie, ktoré sa vzťahuje alebo definuje vzťah medzi atribútmi. Vyskytuje sa 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).

Závislosť databázy často zamieňa študentov, ako aj profesionálov v oblasti databáz. Našťastie nie sú také zložité, ako sa môžu zdajú. Najlepšie je ich vysvetliť pomocou niekoľkých príkladov. Tu budeme skúmať spoločné typy závislostí databáz.

Databázové závislosti a funkčné závislosti

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 takto:

A -> B

Napríklad v tabuľke, v ktorej sa uvádzajú charakteristiky zamestnancov, vrátane čísla SSN (Social Security Number) a mena, možno povedať, že meno je závislé od SSN (alebo SSN -> name), pretože meno zamestnanca môže byť jednoznačne určené SSN. Reverzné vyhlásenie (meno -> SSN) však nie je pravdivé, pretože viac ako jeden zamestnanec môže mať rovnaké meno, ale vždy má iné 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ť, ako je {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 meno {SSN, age} -> 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 toho, aby ste ovplyvnili vzťah 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ť, keď je pravda iba preto, že obe A -> B a B -> C sú pravdivé.

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, v tejto tabuľke existuje 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áklady databázy sú dôležité na pochopenie, pretože poskytujú základné stavebné bloky používané v normalizácii databázy, proces efektívneho organizovania údajov v databáze. 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 existovať žiaden atribút nonprime.
  • Aby tabuľka bola v tretej normálnej podobe (3NF), každý atribút nonprrime musí mať neprechodnú funkčnú závislosť na každom kandidátnom kľúči.
  • 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.