Průvodce pro pochopení závislostí databáze
Závislost je omezení, které se vztahuje na nebo definuje vztah mezi atributy. V databázi se vyskytuje, když informace uložené ve stejné databázové tabulce jednoznačně určují jiné informace uložené ve stejné tabulce. Můžete to také popsat jako vztah, ve kterém znáte hodnota jednoho atributu (nebo sady atributů) stačí k tomu, abyste zjistili hodnotu jiného atributu (nebo sady atributů) ve stejné tabulce.
Databázové závislosti často matou jak studenty, tak databázové profesionály. Naštěstí nejsou tak složité, jak by se mohlo zdát. Nejlépe je lze vysvětlit na několika příkladech. Zde prozkoumáme běžné typy závislostí databáze.
Závislosti databáze a funkční závislosti
Říci, že existuje závislost mezi atributy v tabulce, je stejné jako říkat, že existuje a funkční závislost mezi těmito atributy. Pokud je v databázi taková závislost, že atribut B závisí na atributu A, zapsali byste to jako:
A -> B
Například v tabulce uvádějící charakteristiky zaměstnance, včetně čísla sociálního zabezpečení (SSN) a jména, to může být řekl, že jméno závisí na SSN (nebo SSN -> jméno), protože jméno zaměstnance lze jednoznačně určit z SSN. Opačné tvrzení (jméno -> SSN) však není pravdivé, protože více než jeden zaměstnanec může mít stejné jméno, ale vždy má různá SSN.
Triviální funkční závislosti
Triviální funkční závislost nastane, když popíšete funkční závislost atributu na kolekci atributů, která obsahuje původní atribut. Například {A, B} -> B je triviální funkční závislost, stejně jako {jméno, SSN} -> SSN. Tento typ funkční závislosti se nazývá triviální, protože může být odvozen ze zdravého rozumu. Je zřejmé, že pokud již znáte hodnotu B, pak lze hodnotu B jednoznačně určit touto znalostí.
Plně funkční závislosti
Plná funkční závislost nastane, když již splňujete požadavky na funkční závislost a sadu atributů na levé straně příkazu funkční závislosti nelze nijak snížit dále. Například {SSN, věk} -> jméno je funkční závislost, ale není to a plná funkční závislost protože můžete odstranit věk z levé strany příkazu, aniž byste ovlivnili závislostní vztah.
Tranzitivní závislosti
K tranzitivním závislostem dochází, když existuje nepřímý vztah, který způsobuje funkční závislost. Například A -> C je a tranzitivní závislost když je to pravda jen proto, že obě A -> B a B -> C jsou pravdivé.
Vícehodnotové závislosti
K vícehodnotovým závislostem dochází, když přítomnost jednoho nebo více řádků v tabulce implikuje přítomnost jednoho nebo více dalších řádků v téže tabulce. Představte si například automobilku, která vyrábí mnoho modelů aut, ale u každého modelu vždy vyrábí červenou i modrou barvu. Pokud máte tabulku, která obsahuje název modelu, barvu a rok každého vozu, který společnost vyrábí, je zde a vícehodnotová závislost v té tabulce. Pokud je řádek pro určitý název modelu a rok uveden v modré barvě, musí existovat také podobný řádek odpovídající červené verzi stejného vozu.
Význam závislostí
Závislosti databáze je důležité pochopit, protože poskytují základní stavební bloky používané v normalizace databáze, proces efektivní organizace dat v databázi. Například:
- Aby byl stůl druhá normální forma (2NF), v tabulce nesmí být žádný případ neprvočíslého atributu, který je funkčně závislý na podmnožině kandidátský klíč.
- Aby byl stůl třetí normální forma (3NF), každý nonprime atribut musí mít netransitivní funkční závislost na každém kandidátním klíči.
- Aby byl stůl Normální forma Boyce-Codda (BCNF), každá funkční závislost (jiná než triviální závislosti) musí být na superklíči.
- Aby byla tabulka ve čtvrté normální formě (4NF), nesmí mít žádné vícehodnotové závislosti.