Razmerje med enim in mnogim v zbirki podatkov se pojavi, kadar ima vsak zapis v tabeli A morda veliko povezanih zapisov v tabeli B, vendar ima vsak zapis v tabeli B lahko le en ustrezen zapis v tabeli A. Razmerje med enim in mnogim baza podatkov je najpogostejša oblika relacijske baze podatkov in je v središču dobrega oblikovanja.
Razmislite o razmerju med učiteljem in tečaji, ki jih poučujejo. Učitelj lahko poučuje več tečajev, vendar tečaj ne bi imel enakega odnosa z učiteljem.
Zato lahko v tabeli Tečaji za vsak zapis v tabeli učiteljev v tabeli vnesete veliko zapisov. To je razmerje med enim in mnogim: en učitelj na več predmetov.
Zakaj je vzpostavitev razmerja med enim in mnogoterim pomembna
Če želite predstaviti odnos med enim in mnogim, potrebujete vsaj dve mizi. Poglejmo, zakaj.
Morda smo ustvarili tabelo učiteljev, v kateri smo želeli zapisati ime in tečaje. Lahko bi ga oblikovali takole:
Teacher_ID | Teacher_Name | Seveda |
---|---|---|
Učitelj_001 | Carmen | Biologija |
Učitelj_002 | Veronica | Matematika |
Učitelj_003 | Jorge | angleščina |
Kaj, če Carmen uči dva ali več tečajev? Imamo dve možnosti s tem dizajnom. Lahko bi ga dodali v obstoječi zapis Carmen, kot je ta:
Teacher_ID | Učitelj _Name | Seveda |
---|---|---|
Učitelj_001 | Carmen | Biologija, matematika |
Učitelj_002 | Veronica | Matematika |
Učitelj_003 | Jorge | angleščina |
Vendar pa je zgornja zasnova nefleksibilna in lahko kasneje povzroči težave pri vstavljanju, urejanju ali brisanju podatkov.
Težko je poiskati podatke. Ta zasnova krši prvo načelo normalizacije baze podatkov, prvi navadni obrazec (1NF) , ki navaja, da mora vsaka celica v tabeli vsebovati enoten, diskreten del podatkov.
Druga možnost alternativnega oblikovanja je preprosto dodati drugi zapis za Carmen:
Učitelj _ID | Učitelj _Name | Seveda |
---|---|---|
Učitelj_001 | Carmen | Biologija |
Učitelj_001 | Carmen | Matematika |
Učitelj_002 | Veronica | Matematika |
Učitelj_003 | Jorge | angleščina |
To se drži 1NF, vendar še vedno slabo oblikuje bazo podatkov, saj uvaja redundanco in bi lahko po nepotrebnem napihnila zelo veliko podatkovno bazo. Še pomembneje je, da bi lahko podatki postali neskladni. Na primer, kaj, če se je ime Carmen spremenilo? Nekdo, ki dela s podatki, lahko posodobi svoje ime v enem zapisu in ga ne posodobi v drugem zapisu. Ta zasnova krši drugo normalno obliko (2NF), ki se drži 1NF in se mora izogibati tudi odvečnim številom več zapisov, tako da ločuje podnaborne podatke v več tabel in ustvari razmerje med njimi.
Kako oblikovati bazo podatkov z enim do mnogoterim odnosom
Za uresničitev razmerja med enim in mnogim v tabeli Učitelji in tečaje razčlenimo tabele na dve in jih povezujemo z uporabo tujih ključev .
Tukaj smo odstranili stolpec »Tečaj« v tabeli Učitelji:
Učitelj _ID | Učitelj _Name |
---|---|
Učitelj_001 | Carmen |
Učitelj_002 | Veronica |
Učitelj_003 | Jorge |
Tukaj je tabela za tečaj. Upoštevajte, da njen tuji ključ, Teacher_ID, povezuje tečaj z učiteljem v tabeli Učitelji:
Course_ID | Course_Name | Teacher_ID |
---|---|---|
Course_001 | Biologija | Učitelj_001 |
Course_002 | Matematika | Učitelj_001 |
Course_003 | angleščina | Učitelj_003 |
Razvili smo povezavo med tabelo učiteljev in tečaji s tujim ključem.
To nam pove, da Carmen uči biologijo in matematiko in da Jorge poučuje angleško.
Vidimo, kako se ta oblika izogiba morebitnim presežnim delavcem, posameznim učiteljem omogoča, da poučujejo več tečajev in izvajajo razmerje med enim in mnogim.
Baze podatkov lahko tudi izvajajo razmerje ena na ena in razmerje med mnogimi in mnogimi.