Odnosi jedan prema više u bazi podataka

Sadržaj:

Odnosi jedan prema više u bazi podataka
Odnosi jedan prema više u bazi podataka
Anonim

Odnos jedan prema više u bazi podataka događa se kada svaki zapis u tablici A može imati mnogo povezanih zapisa u tablici B, ali svaki zapis u tablici B može imati samo jedan odgovarajući zapis u tablici A.

Odnos jedan prema više u bazi podataka najčešći je dizajn relacijske baze podataka i srž je dobrog dizajna.

Baze podataka također mogu implementirati odnos jedan-na-jedan i odnos više-prema-više.

Image
Image

Primjer odnosa jedan prema više

Razmotrite odnos između nastavnika i kolegija koje predaje. Učitelj može predavati više razreda, ali tečaj neće imati isti odnos s učiteljem.

Stoga, za svaki zapis u tablici Nastavnici, može postojati mnogo zapisa u tablici Tečajevi. Ovaj primjer ilustrira odnos jedan prema više: jedan nastavnik prema više tečajeva.

Zašto je uspostavljanje odnosa jedan-na-više važno

Da biste predstavili odnos jedan prema više, potrebne su vam najmanje dvije tablice. Da vidimo zašto.

Pridržavanje prvog dizajna normalnog oblika

Možda smo izradili tablicu u koju želimo zabilježiti naziv i predmete koje podučavamo. Mogli bismo dizajnirati tablicu nastavnika i tečajeva ovako:

ID_učitelja Ime_učitelja Tečaj
Učitelj_001 Carmen Biologija
Učitelj_002 Veronika Matematika
Učitelj_003 Jorge engleski

Što ako Carmen predaje dva ili više kolegija? S ovim dizajnom imamo dvije mogućnosti. Mogli bismo to dodati u Carmenin postojeći zapis, ovako:

ID_učitelja Učitelj_Ime Tečaj
Učitelj_001 Carmen Biologija, matematika
Učitelj_002 Veronika Matematika
Učitelj_003 Jorge engleski

Međutim, gornji dizajn je nefleksibilan i može rezultirati problemima kasnije kada umetnete, uredite ili izbrišete podatke. To otežava pretraživanje podataka.

Ovaj dizajn također krši prvo načelo normalizacije baze podataka, First Normal Form (1NF), koji navodi da svaka ćelija tablice treba sadržavati jedan, diskretni dio podataka.

Drugo pravilo normalnog oblika

Druga alternativa dizajnu može biti dodavanje drugog 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 engleski

Ovaj pristup se pridržava 1NF-a, ali je još uvijek loš dizajn baze podataka jer uvodi redundanciju i može nepotrebno napuhati veliku bazu podataka. Još važnije, podaci bi mogli postati nedosljedni.

Na primjer, što ako se Carmenino ime promijeni? Netko tko radi s podacima mogao bi ažurirati njezino ime u jednom zapisu i ne uspjeti ga ažurirati u drugom zapisu.

Ovaj dizajn krši standard drugog normalnog oblika (2NF), koji je u skladu s 1NF i također mora izbjegavati redundantnost više zapisa. 2NF pravilo to postiže odvajanjem podskupa podataka u više tablica i stvaranjem odnosa između njih.

Kako dizajnirati bazu podataka s relacijama jedan prema više

Da biste implementirali odnos jedan-prema-više u tablici Nastavnici i Tečajevi, razdvojite tablice na dvije i povežite ih pomoću stranog ključa.

Ovdje smo uklonili stupac Tečaj u tablici Nastavnici:

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

A ovdje je tablica Tečajevi. Imajte na umu da njegov strani ključ, Teacher_ID, povezuje tečaj s nastavnikom u tablici Učitelji:

ID_tečaja Course_Name ID_učitelja
Tečaj_001 Biologija Učitelj_001
Tečaj_002 Matematika Učitelj_001
Tečaj_003 engleski Učitelj_003

Razvili smo odnos između nastavnika i tablice Tečajevi koristeći strani ključ. Ovaj nam raspored govori da Carmen predaje i biologiju i matematiku, a da Jorge predaje engleski.

Možemo vidjeti kako ovaj dizajn izbjegava sve moguće redundancije, omogućuje pojedinačnim nastavnicima da predaju više kolegija i implementira odnos jedan prema više.

Preporučeni: