Skip to main content

En-til-mange forhold i en database

Philip Evans: How data will transform business (Kan 2025)

Philip Evans: How data will transform business (Kan 2025)
Anonim

Et enkelt til mange forhold i en database opstår, når hver post i tabel A kan have mange sammenknyttede poster i tabel B, men hver post i tabel B må kun have en tilsvarende post i tabel A. Et forhold til et stort antal i en database er den mest almindelige relationelle database design og er kernen i godt design.

Overvej forholdet mellem en lærer og de kurser, de underviser. En lærer kan undervise i flere kurser, men kurset vil ikke have det samme forhold til læreren.

Derfor kunne der for hver post i et lærerbord være mange optegnelser i kurser-tabellen. Dette er et enkelt til mange forhold: en lærer til flere kurser.

Hvorfor etablere et enkelt til mange forhold er vigtigt

For at repræsentere et til mange forhold, skal du have mindst to tabeller. Lad os se hvorfor.

Måske skabte vi et bord, hvor vi ønskede at registrere navn og kurser undervist. Vi kan designe det sådan:

Lærere og kurser
Teacher_IDTEACHER_NAMERute
Teacher_001CarmenBiologi
Teacher_002VeronicaMath
Teacher_003Jorgeengelsk

Hvad hvis Carmen lærer to eller flere kurser? Vi har to muligheder med dette design. Vi kunne bare føje det til Carmens eksisterende rekord, som dette:

Lærere og kurser
Teacher_IDLærer_NavnRute
Teacher_001CarmenBiologi, Math
Teacher_002VeronicaMath
Teacher_003Jorgeengelsk

Udformningen ovenfor er dog ufleksibel og kan resultere i problemer senere, når du forsøger at indsætte, redigere eller slette data.

Det gør det svært at søge efter data. Dette design krænker det første princip om database normalisering, First Normal Form (1NF), som angiver, at hver tabelcelle skal indeholde et enkelt, diskret datastykke.

Et andet design alternativ kan være at blot tilføje en ny rekord for Carmen:

Lærere og kurser
Lærer_idLærer_NavnRute
Teacher_001CarmenBiologi
Teacher_001CarmenMath
Teacher_002VeronicaMath
Teacher_003Jorgeengelsk

Dette overholder 1NF, men er stadig dårlig database design, fordi det introducerer redundans og kunne opblussen en meget stor database unødigt. Endnu vigtigere kan dataene blive inkonsekvente. For eksempel, hvad hvis Carmen's navn ændrede sig? Nogen der arbejder med dataene, kan opdatere hendes navn i en post og undlader at opdatere det i den anden post. Dette design overtræder Second Normal Form (2NF), som overholder 1NF og skal også undgå afskedigelser af flere poster ved at adskille undergrupper af data til flere tabeller og skabe et forhold mellem dem.

Sådan designer du en database med en-til-mange forhold

For at gennemføre et enkelt til mange forhold i tabellen Lærere og kurser bryder vi tabellerne i to og knytter dem til en udenlandsk nøgle.

Her har vi fjernet kurskolonnen i lærerbordet:

Lærere
Lærer_idLærer_Navn
Teacher_001Carmen
Teacher_002Veronica
Teacher_003Jorge

Og her er kurserbordet. Bemærk, at dens udenlandske nøgle, Teacher_ID, forbinder et kursus til en lærer i lærerbordet:

Kurser
Course_IDCOURSE_NAMETeacher_ID
Course_001BiologiTeacher_001
Course_002MathTeacher_001
Course_003engelskTeacher_003

Vi har udviklet et forhold mellem lærer og kurser bordet ved hjælp af en fremmed nøgle.

Dette fortæller os, at både biologi og matematik er undervist af Carmen og at Jorge underviser engelsk.

Vi kan se, hvordan dette design undgår mulige afskedigelser, giver individuelle lærere mulighed for at undervise i flere kurser og implementerer et enkelt til mange forhold.

Databaser kan også implementere et et-til-et-forhold og et mange til mange forhold.