Een-tot-baie-verhoudings in 'n databasis

INHOUDSOPGAWE:

Een-tot-baie-verhoudings in 'n databasis
Een-tot-baie-verhoudings in 'n databasis
Anonim

'n Een-tot-baie verhouding in 'n databasis vind plaas wanneer elke rekord in Tabel A baie gekoppelde rekords in Tabel B kan hê, maar elke rekord in Tabel B mag dalk net een ooreenstemmende rekord in Tabel A hê.

'n Een-tot-baie-verhouding in 'n databasis is die mees algemene relasionele databasisontwerp en is die kern van goeie ontwerp.

Databasisse kan ook 'n een-tot-een-verhouding en 'n baie-tot-baie-verhouding implementeer.

Image
Image

Voorbeeld van 'n een-tot-baie-verhouding

Oorweeg die verhouding tussen 'n onderwyser en die kursusse wat hulle aanbied. 'n Onderwyser kan veelvuldige klasse aanbied, maar die kursus sal nie dieselfde verhouding met die onderwyser hê nie.

Daarom, vir elke rekord in 'n Onderwyserstabel, kan daar baie rekords in die kursusse-tabel wees. Hierdie voorbeeld illustreer 'n een-tot-baie-verhouding: een onderwyser vir verskeie kursusse.

Waarom is dit belangrik om 'n een-tot-baie-verhouding te vestig

Om 'n een-tot-baie-verhouding te verteenwoordig, benodig jy ten minste twee tabelle. Kom ons kyk hoekom.

Voldoening aan eerste normale vormontwerp

Miskien het ons 'n tabel geskep waarin ons die naam en kursusse wat aangebied word, wil aanteken. Ons kan dalk 'n onderwysers- en kursustabel soos volg ontwerp:

Teacher_ID Onderwyser_Naam Kursus
Teacher_001 Carmen Biologie
Teacher_002 Veronica Math
Teacher_003 Jorge Engels

Wat as Carmen twee of meer kursusse aanbied? Ons het twee opsies met hierdie ontwerp. Ons kan dit by Carmen se bestaande rekord voeg, soos volg:

Teacher_ID Onderwyser_Name Kursus
Teacher_001 Carmen Biologie, Wiskunde
Teacher_002 Veronica Math
Teacher_003 Jorge Engels

Die ontwerp hierbo is egter onbuigsaam en kan later probleme tot gevolg hê wanneer jy data invoeg, redigeer of uitvee. Dit maak dit moeilik om vir data te soek.

Hierdie ontwerp oortree ook die eerste beginsel van databasisnormalisering, First Normal Form (1NF), wat bepaal dat elke tabelsel 'n enkele, diskrete stuk data moet bevat.

Die tweede normale vormreël

'n Ander ontwerp- alternatief kan wees om 'n tweede rekord vir Carmen by te voeg:

Onderwyser_ID Onderwyser_Name Kursus
Teacher_001 Carmen Biologie
Teacher_001 Carmen Math
Teacher_002 Veronica Math
Teacher_003 Jorge Engels

Hierdie benadering voldoen aan 1NF, maar is steeds swak databasisontwerp omdat dit oortolligheid bekendstel en 'n groot databasis onnodig kan opblaas. Belangriker nog, die data kan inkonsekwent raak.

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 die Tweede Normale Vorm (2NF)-standaard, wat aan 1NF voldoen en ook die oortolligheid van veelvuldige rekords moet vermy. Die 2NF-reël bereik dit deur substelle data in veelvuldige 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-veel-verhouding in die Onderwysers- en Kursusse-tabel te implementeer, breek die tabelle in twee en koppel hulle met 'n vreemde sleutel.

Hier het ons die Kursuskolom in die Onderwyserstabel verwyder:

Onderwyser_ID Onderwyser_Name
Teacher_001 Carmen
Teacher_002 Veronica
Teacher_003 Jorge

En hier is die kursusse-tabel. Let daarop dat sy vreemde sleutel, Teacher_ID, 'n kursus aan 'n onderwyser in die Onderwyserstabel koppel:

Course_ID Kursusnaam Teacher_ID
Course_001 Biologie Teacher_001
Course_002 Math Teacher_001
Course_003 Engels Teacher_003

Ons het 'n verhouding tussen die Onderwysers en die kursusse-tabel ontwikkel deur 'n vreemde sleutel te gebruik. Hierdie reëling sê vir ons dat Carmen beide Biologie en Wiskunde onderrig en dat Jorge Engels onderrig.

Ons kan sien hoe hierdie ontwerp enige moontlike afdankings vermy, individuele onderwysers toelaat om veelvuldige kursusse te onderrig, en 'n een-tot-baie-verhouding implementeer.

Aanbeveel: