Skip to main content

One-To-Many Relationships sa isang Database

FileMaker Coaches' Corner - Tip 1 - Relationships - Naming Conventions (Mayo 2025)

FileMaker Coaches' Corner - Tip 1 - Relationships - Naming Conventions (Mayo 2025)
Anonim

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:

Mga guro at Kurso
Teacher_IDPangalan ng guroKurso
Teacher_001CarmenBiology
Teacher_002VeronicaMath
Teacher_003JorgeIngles

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_IDGuro_NameKurso
Teacher_001CarmenBiology, Math
Teacher_002VeronicaMath
Teacher_003JorgeIngles

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_IDGuro_NameKurso
Teacher_001CarmenBiology
Teacher_001CarmenMath
Teacher_002VeronicaMath
Teacher_003JorgeIngles

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:

Mga guro
Guro_IDGuro_Name
Teacher_001Carmen
Teacher_002Veronica
Teacher_003Jorge

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_IDCourse_NameTeacher_ID
Course_001BiologyTeacher_001
Course_002MathTeacher_001
Course_003InglesTeacher_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.