Čo je databázový vzťah?

Obsah:

Čo je databázový vzťah?
Čo je databázový vzťah?
Anonim

Vzťah sa vytvorí medzi dvoma databázovými tabuľkami, keď jedna tabuľka používa cudzí kľúč, ktorý odkazuje na primárny kľúč inej tabuľky. Toto je základný koncept termínu relačná databáza.

Ako cudzí kľúč funguje na nadviazanie vzťahu

Primárny kľúč jedinečne identifikuje každý záznam v tabuľke. Je to typ kandidátskeho kľúča, ktorý je zvyčajne prvým stĺpcom v tabuľke a môže byť automaticky generovaný databázou, aby sa zabezpečila jeho jedinečnosť. Cudzí kľúč je ďalší kandidátsky kľúč (nie primárny kľúč), ktorý sa používa na prepojenie záznamu s údajmi v inej tabuľke.

Zvážte napríklad tieto dve tabuľky, ktoré určujú, ktorý učiteľ vyučuje ktorý kurz. Primárny kľúč tabuľky Courses je tu Course_ID. Jeho cudzí kľúč je Teacher_ID:

Course_ID Course_Name Teacher_ID
Course_001 Biológia Teacher_001
Course_002 Math Teacher_002
Course_003 angličtina Teacher_003

Môžete vidieť, že cudzí kľúč v Kurzoch sa zhoduje s primárnym kľúčom v Učiteľoch:

Teacher_ID Teacher_Name
Teacher_001 Carmen
Teacher_002 Veronica
Teacher_003 Jorge

Môžeme povedať, že cudzí kľúč Teacher_ID pomohol vytvoriť vzťah medzi tabuľkami Kurzy a Učitelia.

Image
Image

Typy databázových vzťahov

Pomocou cudzích kľúčov alebo iných kandidátskych kľúčov môžete implementovať tri typy vzťahov medzi tabuľkami:

One-to-One

Tento typ vzťahu umožňuje iba jeden záznam na každej strane vzťahu. Primárny kľúč sa týka iba jedného záznamu (alebo žiadneho) v inej tabuľke. Napríklad v manželstve má každý z manželov iba jedného ďalšieho manželského partnera. Tento druh vzťahu môže byť implementovaný v jednej tabuľke, a preto nepoužíva cudzí kľúč.

One-to-Many

Vzťah one-to-many umožňuje, aby jeden záznam v jednej tabuľke súvisel s viacerými záznamami v inej tabuľke. Predstavte si firmu s databázou, ktorá obsahuje tabuľky Zákazníci a Objednávky.

Jeden zákazník si môže zakúpiť viacero objednávok, no jednu objednávku nemožno prepojiť s viacerými zákazníkmi. Preto by tabuľka Objednávky obsahovala cudzí kľúč, ktorý by sa zhodoval s primárnym kľúčom tabuľky Zákazníci, zatiaľ čo tabuľka Zákazníci by nemala žiadny cudzí kľúč smerujúci na tabuľku Objednávky.

Many-to-Many

Ide o komplexný vzťah, v ktorom sa mnohé záznamy v tabuľke môžu spájať s mnohými záznamami v inej tabuľke. Naša firma napríklad pravdepodobne potrebuje tabuľky Zákazníci a Objednávky a pravdepodobne potrebuje aj tabuľku Produkty.

Vzťah medzi tabuľkou Zákazníci a Objednávky je opäť jeden k mnohým, ale zvážte vzťah medzi tabuľkou Objednávky a Produkty. Objednávka môže obsahovať viacero produktov a produkt môže byť prepojený s viacerými objednávkami, pretože niekoľko zákazníkov môže odoslať objednávku, ktorá obsahuje niektoré z rovnakých produktov. Tento druh vzťahu vyžaduje minimálne tri stoly.

Prečo sú vzťahy s databázou dôležité?

Vytvorenie konzistentných vzťahov medzi tabuľkami databázy pomáha zabezpečiť integritu údajov a prispieva k normalizácii databázy. Čo keby sme napríklad neprepojili žiadne tabuľky pomocou cudzieho kľúča a namiesto toho skombinovali údaje v tabuľkách Kurzy a Učitelia takto:

Teacher_ID Teacher_Name Kurz
Teacher_001 Carmen Biológia, matematika
Teacher_002 Veronica Math
Teacher_003 Jorge angličtina

Tento návrh je neflexibilný a porušuje prvý princíp normalizácie databázy, First Normal Form, ktorý uvádza, že každá bunka tabuľky by mala obsahovať jeden samostatný údaj.

Alebo sme sa možno rozhodli pridať druhý záznam pre Carmen, aby sme presadili 1NF:

Teacher_ID Teacher_Name Kurz
Teacher_001 Carmen Biológia
Teacher_001 Carmen Math
Teacher_002 Veronica Math
Teacher_003 Jorge angličtina

Toto je stále slabý návrh, ktorý zavádza zbytočnú duplikáciu a takzvané anomálie vkladania údajov, čo znamená, že by to mohlo prispieť k nekonzistentným údajom. Napríklad, ak má učiteľ viacero záznamov, čo ak je potrebné niektoré údaje upraviť, ale osoba, ktorá ich upravuje, si neuvedomuje, že existuje viacero záznamov? Tabuľka by potom obsahovala rôzne údaje pre tú istú osobu bez akéhokoľvek jasného spôsobu, ako ju identifikovať alebo sa jej vyhnúť.

Rozdelenie tejto tabuľky na dve tabuľky, Učitelia a Kurzy, vytvára správny vzťah medzi údajmi, a preto pomáha zabezpečiť konzistentnosť a presnosť údajov.

Odporúča: