Isa-sa-Maraming Relasyon sa isang Database

Talaan ng mga Nilalaman:

Isa-sa-Maraming Relasyon sa isang Database
Isa-sa-Maraming Relasyon sa isang Database
Anonim

Ang isa-sa-maraming relasyon sa isang database ay nangyayari kapag ang bawat tala sa Talahanayan A ay maaaring may maraming naka-link na talaan sa Talahanayan B, ngunit ang bawat talaan sa Talahanayan B ay maaaring magkaroon lamang ng isang kaukulang talaan sa Talahanayan A.

Ang one-to-many na relasyon sa isang database ay ang pinakakaraniwang disenyo ng relational database at nasa puso ng magandang disenyo.

Maaari ding magpatupad ang mga database ng isa-sa-isang relasyon at marami-sa-maraming relasyon.

Image
Image

Halimbawa ng Isa-sa-Maraming Relasyon

Isipin ang kaugnayan sa pagitan ng isang guro at ng mga kursong itinuturo nila. Ang isang guro ay maaaring magturo ng maraming klase, ngunit ang kurso ay hindi magkakaroon ng parehong kaugnayan sa guro.

Samakatuwid, para sa bawat tala sa isang talahanayan ng Mga Guro, maaaring mayroong maraming mga tala sa talahanayan ng Mga Kurso. Ang halimbawang ito ay naglalarawan ng isa-sa-maraming relasyon: isang guro sa maraming kurso.

Bakit Mahalaga ang Pagtatatag ng Isa-sa-Maraming Relasyon

Upang kumatawan sa isa-sa-maraming relasyon, kailangan mo ng hindi bababa sa dalawang talahanayan. Tingnan natin kung bakit.

Pagsunod sa First Normal Form Design

Marahil gumawa kami ng talahanayan kung saan gusto naming itala ang pangalan at mga kursong itinuro. Maaari kaming magdisenyo ng talahanayan ng Mga Guro at Kurso tulad nito:

Teacher_ID Pangalan_Guro Course
Teacher_001 Carmen Biology
Teacher_002 Veronica Math
Teacher_003 Jorge English

Paano kung magturo si Carmen ng dalawa o higit pang kurso? Mayroon kaming dalawang pagpipilian sa disenyo na ito. Maaari naming idagdag ito sa kasalukuyang record ng Carmen, tulad nito:

Teacher_ID Guro_Pangalan Course
Teacher_001 Carmen Biology, Math
Teacher_002 Veronica Math
Teacher_003 Jorge English

Gayunpaman, ang disenyo sa itaas ay hindi nababaluktot at maaaring magresulta sa mga problema sa ibang pagkakataon kapag nagpasok ka, nag-edit, o nagtanggal ng data. Pinapahirapan ang paghahanap ng data.

Nilalabag din ng disenyong ito ang unang prinsipyo ng normalization ng database, First Normal Form (1NF), na nagsasaad na ang bawat table cell ay dapat maglaman ng isang solong, discrete na piraso ng data.

The Second Normal Form Rule

Ang isa pang alternatibo sa disenyo ay maaaring magdagdag ng pangalawang record para sa Carmen:

Guro_ID Guro_Pangalan Course
Teacher_001 Carmen Biology
Teacher_001 Carmen Math
Teacher_002 Veronica Math
Teacher_003 Jorge English

Ang diskarte na ito ay sumusunod sa 1NF ngunit mahina pa rin ang disenyo ng database dahil nagpapakilala ito ng redundancy at maaaring lumaki ang isang malaking database nang hindi kinakailangan. Higit sa lahat, maaaring hindi magkatugma ang data.

Halimbawa, paano kung nagbago ang pangalan ni Carmen? Maaaring i-update ng isang taong nagtatrabaho sa data ang kanyang pangalan sa isang tala at hindi ito ma-update sa pangalawang tala.

Ang disenyong ito ay lumalabag sa pamantayang Second Normal Form (2NF), na sumusunod sa 1NF at dapat ding iwasan ang mga redundancies ng maraming record. Nagagawa ito ng panuntunan ng 2NF sa pamamagitan ng paghihiwalay ng mga subset ng data sa maraming talahanayan at paggawa ng ugnayan sa pagitan ng mga ito.

Paano Magdisenyo ng Database na May Isa-sa-Maraming Relasyon

Upang magpatupad ng one-to-many na relasyon sa talahanayan ng Mga Guro at Kurso, hatiin ang mga talahanayan sa dalawa at i-link ang mga ito gamit ang isang foreign key.

Dito, inalis namin ang column na Course sa Teachers table:

Guro_ID Guro_Pangalan
Teacher_001 Carmen
Teacher_002 Veronica
Teacher_003 Jorge

At narito ang talahanayan ng Courses. Tandaan na ang foreign key nito, ang Teacher_ID, ay nag-uugnay ng kurso sa isang guro sa talahanayan ng Mga Guro:

Course_ID Course_Name Teacher_ID
Course_001 Biology Teacher_001
Course_002 Math Teacher_001
Course_003 English Teacher_003

Nakabuo kami ng relasyon sa pagitan ng Teachers at ng Courses table gamit ang foreign key. Sinasabi sa amin ng kaayusan na ito na parehong nagtuturo si Carmen ng Biology at Math at nagtuturo si Jorge ng English.

Nakikita natin kung paano iniiwasan ng disenyong ito ang anumang posibleng redundancies, nagbibigay-daan sa mga indibidwal na guro na magturo ng maraming kurso, at nagpapatupad ng one-to-many na relasyon.

Inirerekumendang: