Závislost je omezení, které se vztahuje na nebo definuje vztah mezi atributy. Vyskytuje se v databázi, když informace uložené ve stejné databázové tabulce jednoznačně určují další informace uložené ve stejné tabulce. Můžete to také popsat jako vztah, kde znalost hodnoty jednoho atributu (nebo sady atributů) stačí k tomu, aby vám řekla hodnotu jiného atributu (nebo sady atributů) ve stejné tabulce. Závislosti na databázi často matou studenty i databázové profesionály. Naštěstí nejsou tak složité, jak se může 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 mezi těmito atributy existuje funkční závislost. Pokud existuje závislost v databázi, takže atribut B je závislý na atributu A, napíšete to jako: A -> B
Například v tabulce se seznamem charakteristik zaměstnanců, včetně čísla sociálního zabezpečení (SSN) a jména, lze říci, že jméno závisí na SSN (nebo SSN -> jméno), protože jméno zaměstnance lze jednoznačně určit z SSN. Zpětné tvrzení (jméno -> SSN) však není pravdivé, protože více než jeden zaměstnanec může mít stejný název, ale vždy mají různé SSN.
Triviální funkční závislosti
Triviální funkční závislost nastane, když popisujete funkční závislost atributu na kolekci atributů, která zahrnuje původní atribut. Například {A, B} -> B je triviální funkční závislost, stejně jako {name, SSN} -> SSN. Tento typ funkční závislosti se nazývá triviální, protože jej lze odvodit od zdravého rozumu. Je zřejmé, že pokud již znáte hodnotu B, pak hodnotu B lze touto znalostí jednoznačně určit.
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 již nelze dále snižovat. Například {SSN, age} -> name je funkční závislost, ale nejedná se o úplnou funkční závislost, protože můžete věk odebrat z levé strany příkazu, aniž by to ovlivnilo vztah závislostí.
Přechodné závislosti
K přechodným závislostem dochází, když existuje nepřímý vztah, který způsobí funkční závislost. Například A -> C je přechodná závislost, když je pravdivá pouze proto, že A -> B i B -> C jsou pravdivé.
Závislosti s více hodnotami
Závislosti s více hodnotami nastanou, když přítomnost jednoho nebo více řádků v tabulce implikuje přítomnost jednoho nebo více dalších řádků ve stejné tabulce. Představte si například automobilku, která vyrábí mnoho modelů automobilů, 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 automobilu, který společnost vyrábí, je v této tabulce vícehodnotová závislost. Pokud existuje řádek pro určitý název modelu a rok modře, musí existovat také podobný řádek odpovídající červené verzi stejného vozu.
Důležitost závislostí
Závislosti na databázi je důležité pochopit, protože poskytují základní stavební bloky používané při normalizaci databáze, což je proces efektivní organizace dat v databázi. Například:
- Aby byla tabulka ve druhé normální formě (2NF), nesmí v tabulce existovat žádný atribut nonprime, který je funkčně závislý na podmnožině kandidátského klíče.
- Aby byla tabulka ve třetí normální formě (3NF), musí mít každý atribut bez prvočísla nepřenosnou funkční závislost na každém kandidátském klíči.
- Aby tabulka byla v normální formě Boyce-Codd (BCNF), musí být každá funkční závislost (kromě triviálních závislostí) na superklíči.
- Aby byla tabulka ve čtvrté normální formě (4NF), nesmí mít žádné vícehodnotové závislosti.