Transitivní závislost v databázi je nepřímý vztah mezi hodnotami ve stejné tabulce, který způsobuje funkční závislost. Chcete-li dosáhnout normalizačního standardu třetího normálního formuláře (3NF), musíte vyloučit jakoukoli přechodnou závislost. Ze své podstaty vyžaduje přechodná závislost tři nebo více atributů (nebo databázových sloupců), které mezi nimi mají funkční závislost, což znamená, že sloupec A v tabulce spoléhá na sloupec B prostřednictvím prostředního sloupce C. Podívejme se, jak to může fungovat.
Příklad tranzitivní závislosti
AUTORI
ID autora | Autor | Rezervovat | Author_Nationality |
---|---|---|---|
Auth_001 | Orson Scott Card | Enderova hra | Spojené státy |
Auth_001 | Orson Scott Card | Děti mysli | Spojené státy |
Auth_002 | Margaret Atwoodová | Příběh služebnice | Kanada |
Ve výše uvedeném příkladu AUTORŮ:
- Kniha → Autor: Tady Rezervovat atribut určuje Autor atribut. Pokud znáte název knihy, můžete zjistit jméno autora. Nicméně, Autor neurčuje Rezervovat, protože autor může napsat více knih. Například jen proto, že víme, že se jmenuje autor Orson Scott Card, stále neznáme název knihy.
- Autor → Autor_Nationality: Stejně tak Autor atribut určuje Author_Nationality, ale ne naopak – to, že víme, že národnost autora je, neznamená, že můžeme autora určit.
Ale tato tabulka zavádí přechodnou závislost:
- Kniha → Author_Nationality: Pokud známe název knihy, můžeme určit státní příslušnost autora ve sloupci Autor.
Vyhněte se přechodným závislostem
Abychom zajistili třetí normální formulář, odstraňte přechodnou závislost. Můžeme začít odebráním sloupce Kniha z tabulky Autoři a vytvořením samostatné tabulky Knihy:
KNIHY
Book_ID | Rezervovat | ID autora |
---|---|---|
Kniha_001 | Enderova hra | Auth_001 |
Kniha_001 | Děti mysli | Auth_001 |
Kniha_002 | Příběh služebnice | Auth_002 |
AUTORI
ID autora | Autor | Author_Nationality |
---|---|---|
Auth_001 | Orson Scott Card | Spojené státy |
Auth_002 | Margaret Atwoodová | Kanada |
Opravilo to? Podívejme se nyní na naše závislosti:
KNIHY stůl:
- Book_ID → Book: The Rezervovat závisí na tom Book_ID.
- V této tabulce neexistují žádné další závislosti, takže jsme v pořádku. Všimněte si, že cizí klíč, Autor_ID, propojí tuto tabulku s tabulkou AUTHORS prostřednictvím svého primárního klíče, ID autora. Vytvořili jsme vztah, abychom se vyhnuli tranzitivní závislosti, klíčovému designu relačních databází.
AUTHORS tabulka:
- Autor_ID → Autor: The Autor závisí na tom ID autora.
- Autor → Autor_Nationality: Národnost může určit autor.
- ID autora → Autor_Nationality: Státní příslušnost lze určit z ID autora skrz Autor atribut. Stále máme přechodnou závislost.
Abychom normalizovali tato data, musíme přidat třetí tabulku:
ZEMĚ
Country_ID | Země |
---|---|
Coun_001 | Spojené státy |
Coun_002 | Kanada |
AUTORI
ID autora | Autor | Country_ID |
---|---|---|
Auth_001 | Orson Scott Card | Coun_001 |
Auth_002 | Margaret Atwoodová | Coun_002 |
Nyní máme tři tabulky, které k propojení mezi tabulkami využívají cizí klíče:
- Cizí klíč tabulky KNIHY, ID autora, propojí knihu s autorem v tabulce AUTHORS.
- Cizí klíč tabulky AUTHORS, Country_ID, propojí autora se zemí v tabulce ZEMĚ.
- Tabulka COUNTRIES nemá žádný cizí klíč, protože není nutné ji v tomto designu propojovat s jinou tabulkou.
Proč jsou tranzitivní závislosti špatným návrhem databáze
Jaká je hodnota vyhnutí se přechodným závislostem, které pomohou zajistit 3NF? Zvažme znovu naši první tabulku a podívejme se na problémy, které vytváří:
AUTORI
ID autora | Autor | Rezervovat | Author_Nationality |
---|---|---|---|
Auth_001 | Orson Scott Card | Enderova hra | Spojené státy |
Auth_001 | Orson Scott Card | Děti mysli | Spojené státy |
Auth_002 | Margaret Atwoodová | Příběh služebnice | Kanada |
Tento druh designu může přispět k anomáliím a nesrovnalostem v datech, například:
- Pokud jste odstranili dvě knihy Děti mysli a Enderova hra, úplně byste vymazali autora „Orson Scott Card“ a jeho národnost z databáze.
- Nového autora nemůžete přidat do databáze, pokud nepřidáte také knihu. Co když autor ještě nepublikuje nebo neznáte název knihy, kterou vytvořil?
- Pokud by „Orson Scott Card“ změnila své občanství, museli byste změnit jeho občanství ve všech záznamech, ve kterých se objevuje. Mít více záznamů se stejným autorem může mít za následek nepřesná data. Co když si osoba zadávající data neuvědomuje, že má někdo více záznamů, a změní data pouze v jednom záznamu?
- Nemůžete odstranit knihu, jako je Příběh služebnice aniž by došlo k úplnému odstranění autora.
Často kladené otázky
- Jaké jsou typy závislostí v systému správy databáze? Existují čtyři typy závislostí databáze: triviální funkční závislosti, úplné funkční závislosti, tranzitivní závislosti a vícehodnotové závislosti.
- Jak se funkční závislost liší od tranzitivní závislosti? Ve správě databáze je závislost relací mezi dvěma nebo více atributy (sloupci). Zatímco funkční závislost je asociace mezi dvěma atributy stejného vztahu, k tranzitivní závislosti dochází, když nepřímý vztah způsobí funkční závislost.
Více od Lifewire
-
Co je databázový vztah?
-
Plná funkční závislost v normalizaci databáze
-
Uvedení databáze do třetí normální formy (3NF)
-
Atribut databáze definuje vlastnosti tabulky
-
Vložení databáze do první normální formy
-
Glosář běžných termínů v databázi
-
Co jsou to závislosti na databázi?
-
Vícehodnotová závislost při návrhu databáze
-
Základy normalizace databáze
-
Definování domény databáze
-
Co je Boyce-Codd normální forma (BCNF)?
-
Co je schéma databáze?
-
Osobní vztahy v databázi
-
Porozumění triviální funkční závislosti
-
Determinanty a jejich role v databázi
-
Aplikace Nook pro Android
Vaše práva na soukromí
Lifewire a naši partneři třetích stran používají soubory cookie a zpracovávají osobní údaje, jako jsou jedinečné identifikátory, na základě vašeho souhlasu s ukládáním a / nebo přístupem k informacím v zařízení, zobrazováním personalizovaných reklam a pro měření obsahu, přehled publika a vývoj produktů. Chcete-li změnit nebo odvolat váš výběr souhlasu pro Lifewire.com, včetně vašeho práva vznést námitku, kde je použit oprávněný zájem, klikněte níže. Nastavení můžete kdykoli aktualizovat pomocí odkazu „Ochrana osobních údajů v EU“ v dolní části jakékoli stránky. Tyto volby budou globálně signalizovány našim partnerům a nebudou mít vliv na data procházení. Seznam partnerů (prodejců)
My a naši partneři zpracováváme údaje pro:
Aktivně pro identifikaci skenujte vlastnosti zařízení. Používejte přesná geolokační data. Ukládejte a / nebo přistupujte k informacím na zařízení. Vyberte přizpůsobený obsah. Vytvořte si osobní profil obsahu. Měření výkonu reklamy. Vyberte základní reklamy. Vytvořte si přizpůsobený profil reklam. Vyberte přizpůsobené reklamy. Aplikujte průzkum trhu a získejte přehled o publiku. Měření výkonu obsahu. Vyvíjejte a vylepšujte produkty. Seznam partnerů (prodejců)