Co je databázový vztah?

Obsah:

Co je databázový vztah?
Co je databázový vztah?
Anonim

Vztah je vytvořen mezi dvěma databázovými tabulkami, když jedna tabulka používá cizí klíč, který odkazuje na primární klíč jiné tabulky. Toto je základní koncept termínu relační databáze.

Jak cizí klíč funguje k navázání vztahu

Primární klíč jednoznačně identifikuje každý záznam v tabulce. Jedná se o typ kandidátského klíče, který je obvykle prvním sloupcem v tabulce a může být automaticky generován databází, aby byla zajištěna jeho jedinečnost. Cizí klíč je další kandidátský klíč (nikoli primární klíč), který se používá k propojení záznamu s daty v jiné tabulce.

Podívejte se například na tyto dvě tabulky, které určují, který učitel vyučuje který kurz. Zde je primárním klíčem tabulky Courses Course_ID. Jeho cizí klíč je Teacher_ID:

Course_ID Course_Name Teacher_ID
Course_001 Biologie Teacher_001
Course_002 Math Teacher_002
Course_003 angličtina Teacher_003

Můžete vidět, že cizí klíč v Kurzech odpovídá primárnímu klíči v Učitelích:

Teacher_ID Teacher_Name
Teacher_001 Carmen
Teacher_002 Veronica
Teacher_003 Jorge

Můžeme říci, že cizí klíč Teacher_ID pomohl vytvořit vztah mezi tabulkami Kurzy a Učitelé.

Image
Image

Typy databázových vztahů

Pomocí cizích klíčů nebo jiných kandidátských klíčů můžete implementovat tři typy vztahů mezi tabulkami:

One-to-One

Tento typ vztahu umožňuje pouze jeden záznam na každé straně vztahu. Primární klíč se vztahuje pouze k jednomu záznamu (nebo žádnému) v jiné tabulce. Například v manželství má každý z manželů pouze jednoho dalšího manžela. Tento druh vztahu lze implementovat v jedné tabulce, a proto nepoužívá cizí klíč.

One-to-Many

Vztah one-to-many umožňuje, aby jeden záznam v jedné tabulce byl spojen s více záznamy v jiné tabulce. Představte si firmu s databází, která obsahuje tabulky Zákazníci a Objednávky.

Jeden zákazník může zakoupit více objednávek, ale jednu objednávku nelze propojit s více zákazníky. Tabulka Orders by tedy obsahovala cizí klíč, který by odpovídal primárnímu klíči tabulky Customers, zatímco tabulka Customers by neměla žádný cizí klíč ukazující na tabulku Orders.

Many-to-Many

Jedná se o komplexní vztah, ve kterém se mnoho záznamů v tabulce může propojit s mnoha záznamy v jiné tabulce. Například naše firma pravděpodobně potřebuje tabulky Zákazníci a Objednávky a pravděpodobně potřebuje také tabulku Produkty.

Vztah mezi tabulkou Zákazníci a Objednávky je opět jeden k mnoha, ale zvažte vztah mezi tabulkou Objednávky a Produkty. Objednávka může obsahovat více produktů a produkt lze propojit s více objednávkami, protože několik zákazníků může odeslat objednávku, která obsahuje některé ze stejných produktů. Tento druh vztahu vyžaduje minimálně tři stoly.

Proč jsou vztahy k databázi důležité?

Vytvoření konzistentních vztahů mezi tabulkami databáze pomáhá zajistit integritu dat a přispívá k normalizaci databáze. Co kdybychom například nepropojili žádné tabulky pomocí cizího klíče a místo toho zkombinovali data v tabulkách Kurzy a Učitelé takto:

Teacher_ID Teacher_Name Kurz
Teacher_001 Carmen Biologie, matematika
Teacher_002 Veronica Math
Teacher_003 Jorge angličtina

Tento návrh je neflexibilní a porušuje první princip normalizace databáze, First Normal Form, který říká, že každá buňka tabulky by měla obsahovat jeden samostatný kus dat.

Nebo jsme se možná rozhodli přidat druhý záznam pro Carmen, abychom prosadili 1NF:

Teacher_ID Teacher_Name Kurz
Teacher_001 Carmen Biologie
Teacher_001 Carmen Math
Teacher_002 Veronica Math
Teacher_003 Jorge angličtina

Toto je stále slabý návrh, který zavádí zbytečnou duplikaci a to, čemu se říká anomálie vkládání dat, což znamená, že by to mohlo přispět k nekonzistentnosti dat. Pokud má například učitel více záznamů, co když je třeba některá data upravit, ale osoba provádějící úpravy dat si neuvědomuje, že existuje více záznamů? Tabulka by pak obsahovala různé údaje pro stejnou osobu, aniž by byl jasný způsob, jak ji identifikovat nebo se jí vyhnout.

Rozdělení této tabulky na dvě tabulky, Učitelé a Kurzy, vytváří správný vztah mezi daty, a pomáhá tak zajistit konzistenci a přesnost dat.

Doporučuje: