One-to-Many Relationships sa isang Database

Ang isang isa-sa-maraming relasyon sa isang database ay nangyayari kapag ang bawat talaan sa Table A ay maaaring magkaroon ng maraming naka-link na talaan sa Table B, ngunit ang bawat talaan sa Table B ay maaaring magkaroon lamang ng isang kaukulang tala sa Table A. Ang isa-sa-maraming relasyon sa ang isang database ay ang pinaka-karaniwang pamanggit na disenyo ng database at nasa gitna ng magandang disenyo.

Isaalang-alang ang relasyon sa pagitan ng isang guro at ng mga kurso na itinuturo nila. Ang isang guro ay maaaring magturo ng maraming mga kurso, ngunit ang kurso ay hindi magkakaroon ng parehong relasyon sa guro.

Samakatuwid, para sa bawat talaan sa isang talahanayan ng Mga Guro, maaaring mayroong maraming mga talaan sa talahanayan ng Kurso. Ito ay isa-sa-maraming relasyon: isang guro sa maraming mga kurso.

Bakit Mahalaga ang Pagtatag ng Isang Isa-hanggang-Maraming Relasyon

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

Marahil ay lumikha kami ng talahanayan ng mga guro kung saan nais naming itala ang pangalan at itinuro ng mga kurso. Maaari naming disenyo ito tulad nito:

Mga guro at Kurso
Teacher_ID Pangalan ng guro Kurso
Teacher_001 Carmen Biology
Teacher_002 Veronica Math
Teacher_003 Jorge Ingles

Paano kung nagtuturo si Carmen ng dalawa o higit pang mga kurso? Mayroon kaming dalawang mga pagpipilian sa disenyo na ito. Maaari lamang nating idagdag ito sa kasalukuyang rekord ni Carmen, tulad nito:

Mga guro at Kurso
Teacher_ID Guro _Name Kurso
Teacher_001 Carmen Biology, Math
Teacher_002 Veronica Math
Teacher_003 Jorge Ingles

Ang disenyo sa itaas, gayunpaman, ay di-mabisa at maaaring magresulta sa mga problema sa paglaon kapag sinusubukang isingit, i-edit o tanggalin ang data.

Ginagawang mahirap hanapin ang data. Ang disenyo ay lumalabag sa unang prinsipyo ng normalisasyon ng database, First Normal Form (1NF) , na nagsasaad na ang bawat talahanayan ng cell ay dapat maglaman ng isang solong, discrete piraso ng data.

Ang isa pang alternatibong disenyo ay maaaring idagdag lamang ang pangalawang talaan para kay Carmen:

Mga guro at Kurso
Guro _ID Guro _Name Kurso
Teacher_001 Carmen Biology
Teacher_001 Carmen Math
Teacher_002 Veronica Math
Teacher_003 Jorge Ingles

Sumusunod ito sa 1NF ngunit mahinang disenyo ng database dahil nagpapakilala ito ng kalabisan at maaaring mamaga ng napakalaking database na hindi kinakailangan. Higit sa lahat, ang data ay maaaring maging hindi pantay-pantay. Halimbawa, paano kung nagbago ang pangalan ni Carmen? Maaaring i-update ng isang taong nagtatrabaho sa data ang kanyang pangalan sa isang rekord at hindi na i-update ito sa pangalawang rekord. Ang disenyo ay lumalabag sa Pangalawang Normal na Form (2NF), na sumusunod sa 1NF at dapat ding maiwasan ang mga redundancies ng maraming mga talaan sa pamamagitan ng paghihiwalay ng mga subset ng data sa maraming mga talahanayan at paglikha ng isang relasyon sa pagitan nila.

Paano Magdisenyo ng Database na May One-to-Many Relationships

Upang ipatupad ang isang isa-sa-maraming relasyon sa talahanayan ng mga Guro at Mga Kurso, binabali namin ang mga talahanayan sa dalawang at iugnay ang mga ito gamit ang isang banyagang susi .

Dito, inalis namin ang haligi ng Kurso sa talahanayan ng Mga Guro:

Mga guro
Guro _ID Guro _Name
Teacher_001 Carmen
Teacher_002 Veronica
Teacher_003 Jorge

At narito ang talahanayan ng Mga Kurso. Tandaan na ang dayuhang susi nito, Teacher_ID, ay nag-uugnay sa isang kurso sa isang guro sa talahanayan ng Mga Guro:

Kurso
Course_ID Course_Name Teacher_ID
Course_001 Biology Teacher_001
Course_002 Math Teacher_001
Course_003 Ingles Teacher_003

Nakagawa kami ng kaugnayan sa pagitan ng mga Guro at ng mga talahanayan ng Kurso gamit ang isang banyagang susi.

Sinasabi nito sa atin na ang Biology at Math ay itinuturo ni Carmen at itinuro ni Jorge ang Ingles.

Makikita natin kung paano iniiwasan ng disenyo ang anumang posibleng mga pag-redirect, pinapayagan ang mga indibidwal na guro na magturo ng maramihang mga kurso, at nagpapatupad ng isa-sa-maraming relasyon.

Ang mga database ay maaari ring ipatupad ang isang isa-sa-isang relasyon at isang maraming-sa-maraming relasyon.