Een-tot-baie verhoudings in 'n databasis

'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:

Onderwysers en Kursusse
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:

Onderwysers en Kursusse
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:

Onderwysers en Kursusse
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:

onderwysers
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:

kursusse
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.