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-sa-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 mesa kung saan nais naming itala ang pangalan at itinuro ng mga kurso. Maaari naming disenyo ito tulad nito:
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:
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:
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 isang Database Gamit ang 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:
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:
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.