Razmerje se vzpostavi med dvema tabelama baze podatkov, ko ena tabela uporablja tuji ključ, ki se sklicuje na primarni ključ druge tabele. To je osnovni koncept izraza relacijska zbirka podatkov.
Kako tuji ključ deluje pri vzpostavljanju razmerja
Primarni ključ edinstveno identificira vsak zapis v tabeli. To je vrsta kandidatnega ključa, ki je običajno prvi stolpec v tabeli in ga lahko baza podatkov samodejno ustvari, da zagotovi, da je edinstven. Tuji ključ je drug kandidatni ključ (ne primarni ključ), ki se uporablja za povezavo zapisa s podatki v drugi tabeli.
Na primer, upoštevajte ti dve tabeli, ki določata, kateri učitelj poučuje kateri predmet. Tu je primarni ključ tabele Tečaji Course_ID. Njegov tuji ključ je Teacher_ID:
Course_ID | Course_Name | ID_učitelja |
---|---|---|
Course_001 | Biologija | Učitelj_001 |
Course_002 | Matematika | Učitelj_002 |
Course_003 | angleščina | Učitelj_003 |
Vidite lahko, da se tuji ključ v tečajih ujema s primarnim ključem v učiteljih:
ID_učitelja | Ime_učitelja |
---|---|
Učitelj_001 | Carmen |
Učitelj_002 | Veronika |
Učitelj_003 | Jorge |
Lahko rečemo, da je tuji ključ Teacher_ID pomagal vzpostaviti razmerje med tabelo Tečaji in Učitelji.
Vrste relacij baze podatkov
Z uporabo tujih ključev ali drugih kandidatnih ključev lahko implementirate tri vrste odnosov med tabelami:
Ena na ena
Ta vrsta razmerja dovoljuje samo en zapis na vsaki strani razmerja. Primarni ključ se nanaša samo na en zapis (ali nobenega) v drugi tabeli. Na primer, v zakonu ima vsak zakonec samo še enega zakonca. To vrsto razmerja je mogoče implementirati v eno samo tabelo in zato ne uporablja tujega ključa.
Ena-proti-več
Razmerje ena proti mnogo omogoča, da je en sam zapis v eni tabeli povezan z več zapisi v drugi tabeli. Razmislite o podjetju z bazo podatkov, ki vsebuje tabele strank in naročil.
Ena stranka lahko kupi več naročil, vendar enega naročila ni mogoče povezati z več strankami. Zato bi tabela Naročila vsebovala tuji ključ, ki bi se ujemal s primarnim ključem tabele Stranke, medtem ko tabela Stranke ne bi imela tujega ključa, ki bi kazal na tabelo Naročila.
Veliko protimnogim
To je kompleksno razmerje, v katerem se lahko številni zapisi v tabeli povežejo z mnogimi zapisi v drugi tabeli. Naše podjetje na primer verjetno potrebuje tabele Stranke in Naročila ter verjetno potrebuje tudi tabelo Izdelki.
Ponavljam, razmerje med tabelo Stranke in Naročila je ena proti mnogo, vendar upoštevajte razmerje med tabelo Naročila in Izdelki. Naročilo lahko vsebuje več izdelkov in izdelek je lahko povezan z več naročili, saj lahko več strank odda naročilo, ki vsebuje nekaj istih izdelkov. Ta vrsta razmerja zahteva najmanj tri tabele.
Zakaj so razmerja med zbirkami podatkov pomembna?
Vzpostavljanje doslednih odnosov med tabelami baze podatkov pomaga zagotoviti celovitost podatkov in prispeva k normalizaciji baze podatkov. Na primer, kaj, če ne bi povezali nobene tabele prek tujega ključa in bi namesto tega združili podatke v tabelah Tečaji in Učitelji, takole:
ID_učitelja | Ime_učitelja | tečaj |
---|---|---|
Učitelj_001 | Carmen | Biologija, matematika |
Učitelj_002 | Veronika | Matematika |
Učitelj_003 | Jorge | angleščina |
Ta zasnova je neprilagodljiva in krši prvo načelo normalizacije baze podatkov, First Normal Form, ki navaja, da mora vsaka celica tabele vsebovati en sam, ločen del podatkov.
Ali pa smo se morda odločili dodati drugi zapis za Carmen, da bi uveljavili 1NF:
ID_učitelja | Ime_učitelja | tečaj |
---|---|---|
Učitelj_001 | Carmen | Biologija |
Učitelj_001 | Carmen | Matematika |
Učitelj_002 | Veronika | Matematika |
Učitelj_003 | Jorge | angleščina |
To je še vedno šibka zasnova, ki uvaja nepotrebno podvajanje in tako imenovane anomalije pri vstavljanju podatkov, kar pomeni, da lahko prispeva k nedoslednim podatkom. Na primer, če ima učitelj več zapisov, kaj, če je treba nekatere podatke urediti, vendar se oseba, ki izvaja urejanje podatkov, ne zaveda, da obstaja več zapisov? Tabela bi potem vsebovala različne podatke za istega posameznika, brez kakršnega koli jasnega načina za njegovo identifikacijo ali izogibanje.
Če to tabelo razdelite na dve tabeli, Učitelji in Tečaji, ustvarite pravilno razmerje med podatki in tako pomagate zagotoviti doslednost in točnost podatkov.