'N Een-tot-baie- verhouding in 'n databasis vind plaas wanneer elke rekord in Tabel A baie gekoppelde rekords in Tabel B het, maar elke rekord in Tabel B mag net een ooreenstemmende rekord in Tabel A hê.' N Een tot baie verhouding in 'n databasis is die mees algemene relationele databasisontwerp en is die kern van goeie ontwerp.
Oorweeg die verhouding tussen 'n onderwyser en die kursusse wat hulle onderrig. 'N Onderwyser kan verskeie kursusse onderrig, maar die kursus sal nie dieselfde verhouding met die onderwyser hê nie.
Dus, vir elke rekord in 'n onderwysertafel, kan daar baie rekords in die Kursusse tafel wees. Dit is 'n verhouding tussen een en ander: een onderwyser aan verskeie kursusse.
Waarom die vestiging van 'n een-tot-baie verhouding is belangrik
Om 'n een-tot-baie verhouding te verteenwoordig, benodig jy ten minste twee tabelle. Kom ons kyk hoekom.
Miskien het ons 'n onderwyserstafel geskep waarin ons die naam en kursusse wat aangebied word, wou opneem. Ons kan dit so ontwerp:
Teacher_ID | Teacher_Name | Kursus |
---|---|---|
Teacher_001 | Carmen | Biologie |
Teacher_002 | Veronica | wiskunde |
Teacher_003 | Jorge | Engels |
Wat as Carmen twee of meer kursusse onderrig? Ons het twee opsies met hierdie ontwerp. Ons kan dit net by Carmen se bestaande rekord byvoeg, soos volg:
Teacher_ID | Onderwyser _Name | Kursus |
---|---|---|
Teacher_001 | Carmen | Biologie, Wiskunde |
Teacher_002 | Veronica | wiskunde |
Teacher_003 | Jorge | Engels |
Die ontwerp hierbo is egter onbuigsaam en kan later probleme tot gevolg hê wanneer u data probeer invoeg, redigeer of verwyder.
Dit maak dit moeilik om data te soek. Hierdie ontwerp oortree die eerste beginsel van databasis normalisering, Eerste Normale Vorm (1NF) , wat bepaal dat elke tabel sel 'n enkele, diskrete stuk data moet bevat.
Nog 'n ontwerp alternatief kan wees om net 'n tweede rekord vir Carmen by te voeg:
Onderwyser _ID | Onderwyser _Name | Kursus |
---|---|---|
Teacher_001 | Carmen | Biologie |
Teacher_001 | Carmen | wiskunde |
Teacher_002 | Veronica | wiskunde |
Teacher_003 | Jorge | Engels |
Dit voldoen aan 1NF, maar is steeds swak databasisontwerp omdat dit redundansie inbring en 'n baie groot databasis onnodig kan opblaas. Nog belangriker, die data kan teenstrydig wees. Byvoorbeeld, wat as Carmen se naam verander het? Iemand wat met die data werk, kan haar naam in een rekord opdateer en versuim om dit in die tweede rekord op te dateer. Hierdie ontwerp oortree Tweede Normale Vorm (2NF), wat voldoen aan 1NF en moet ook die ontslag van veelvuldige rekords vermy deur dele van data in verskeie tabelle te skei en 'n verhouding tussen hulle te skep.
Hoe om 'n databasis met een tot baie verhoudings te ontwerp
Om 'n een-tot-baie verhouding in die Onderwysers- en Kursustafel te implementeer, breek ons die tafels in twee en verbind hulle met 'n vreemde sleutel .
Hier het ons die Kursuskolom in die Onderwyserstafel verwyder:
Onderwyser _ID | Onderwyser _Name |
---|---|
Teacher_001 | Carmen |
Teacher_002 | Veronica |
Teacher_003 | Jorge |
En hier is die kursusse tafel. Let daarop dat sy buitelandse sleutel, Teacher_ID, 'n kursus aan 'n onderwyser in die Onderwysers-tabel koppel:
Course_ID | Kursus naam | Teacher_ID |
---|---|---|
Course_001 | Biologie | Teacher_001 |
Course_002 | wiskunde | Teacher_001 |
Course_003 | Engels | Teacher_003 |
Ons het 'n verhouding tussen die onderwysers en die kursusse-tafel ontwikkel deur 'n vreemde sleutel te gebruik.
Dit vertel ons dat beide Biologie en Wiskunde deur Carmen geleer word en dat Jorge Engels leer.
Ons kan sien hoe hierdie ontwerp moontlike ontslag vermy, individuele onderwysers toelaat om verskeie kursusse te onderrig en implementeer 'n een-tot-baie-verhouding.
Databasisse kan ook 'n een-tot-een-verhouding en 'n baie-tot-baie verhouding implementeer.