One-to-Many Relationships v zbirki podatkov

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:

Učitelji in tečaji
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:

Učitelji in tečaji
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čitelji in tečaji
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č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:

Tečaji
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.