Relacije ena proti več v zbirki podatkov

Kazalo:

Relacije ena proti več v zbirki podatkov
Relacije ena proti več v zbirki podatkov
Anonim

Razmerje ena proti mnogo v zbirki podatkov se pojavi, ko ima lahko vsak zapis v tabeli A veliko povezanih zapisov v tabeli B, vendar ima lahko vsak zapis v tabeli B samo en ustrezen zapis v tabeli A.

Razmerje ena proti mnogo v zbirki podatkov je najpogostejša zasnova relacijske baze podatkov in je v središču dobre zasnove.

Baze podatkov lahko izvajajo tudi razmerje ena proti ena in razmerje veliko proti mnogo.

Image
Image

Primer razmerja ena proti več

Razmislite o odnosu med učiteljem in predmeti, ki jih poučuje. Učitelj lahko poučuje več razredov, vendar tečaj ne bo imel enakega odnosa z učiteljem.

Zato je lahko za vsak zapis v tabeli Učitelji v tabeli Tečaji veliko zapisov. Ta primer ponazarja razmerje ena proti mnogo: en učitelj za več tečajev.

Zakaj je vzpostavitev razmerja ena proti mnogo pomembna

Za predstavitev razmerja ena proti mnogo potrebujete vsaj dve tabeli. Poglejmo zakaj.

Upoštevanje prve zasnove normalne oblike

Morda smo ustvarili tabelo, v katero želimo zabeležiti ime in predmete, ki jih poučujemo. Tabelo učiteljev in tečajev lahko oblikujemo takole:

ID_učitelja Ime_učitelja tečaj
Učitelj_001 Carmen Biologija
Učitelj_002 Veronika Matematika
Učitelj_003 Jorge angleščina

Kaj če Carmen poučuje dva ali več predmetov? Pri tej zasnovi imamo dve možnosti. Lahko bi ga dodali v Carmenin obstoječi zapis, takole:

ID_učitelja Učitelj_Ime tečaj
Učitelj_001 Carmen Biologija, matematika
Učitelj_002 Veronika Matematika
Učitelj_003 Jorge angleščina

Vendar je zgornja zasnova neprilagodljiva in lahko povzroči težave pozneje, ko vstavljate, urejate ali brišete podatke. Oteži iskanje podatkov.

Ta zasnova prav tako krši prvo načelo normalizacije baze podatkov, First Normal Form (1NF), ki navaja, da mora vsaka celica tabele vsebovati en sam, diskreten podatek.

Drugo pravilo normalne oblike

Druga oblika oblikovanja je lahko dodajanje drugega zapisa za Carmen:

Učitelj_ID Učitelj_Ime tečaj
Učitelj_001 Carmen Biologija
Učitelj_001 Carmen Matematika
Učitelj_002 Veronika Matematika
Učitelj_003 Jorge angleščina

Ta pristop se drži 1NF, vendar je še vedno slaba zasnova baze podatkov, ker uvaja redundanco in lahko po nepotrebnem napihne veliko bazo podatkov. Še pomembneje, podatki lahko postanejo nedosledni.

Na primer, kaj če bi se Carmen spremenilo ime? Nekdo, ki dela s podatki, lahko posodobi njeno ime v enem zapisu in ga ne uspe posodobiti v drugem zapisu.

Ta zasnova krši standard Druge normalne oblike (2NF), ki se drži 1NF in se mora izogibati tudi odvečnosti več zapisov. Pravilo 2NF to doseže z ločevanjem podnaborov podatkov v več tabel in ustvarjanjem razmerja med njimi.

Kako oblikovati zbirko podatkov z relacijami ena proti mnogo

Če želite implementirati razmerje ena proti mnogo v tabeli Učitelji in Tečaji, razdelite tabeli na dve in ju povežite s tujim ključem.

Tukaj smo odstranili stolpec Tečaj v tabeli Učitelji:

Učitelj_ID Učitelj_Ime
Učitelj_001 Carmen
Učitelj_002 Veronika
Učitelj_003 Jorge

In tukaj je tabela tečajev. Upoštevajte, da njegov tuji ključ, Teacher_ID, povezuje tečaj z učiteljem v tabeli Učitelji:

Course_ID Course_Name ID_učitelja
Course_001 Biologija Učitelj_001
Course_002 Matematika Učitelj_001
Course_003 angleščina Učitelj_003

Razvili smo razmerje med učitelji in tabelo tečajev z uporabo tujega ključa. Ta ureditev nam pove, da Carmen poučuje biologijo in matematiko in da Jorge poučuje angleščino.

Vidimo lahko, kako se ta zasnova izogiba morebitnim odvečnim delom, omogoča posameznim učiteljem, da poučujejo več predmetov, in izvaja razmerje ena proti mnogo.

Priporočena: