En-til-mange-relationer i en database

Indholdsfortegnelse:

En-til-mange-relationer i en database
En-til-mange-relationer i en database
Anonim

En en-til-mange-relation i en database opstår, når hver post i tabel A kan have mange sammenkædede poster i tabel B, men hver post i tabel B kan kun have én tilsvarende post i tabel A.

Et en-til-mange-forhold i en database er det mest almindelige relationelle databasedesign og er kernen i godt design.

Databaser kan også implementere en en-til-en-relation og en mange-til-mange-relation.

Image
Image

Eksempel på et en-til-mange-forhold

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

Derfor kan der for hver post i en lærertabel være mange poster i kurser-tabellen. Dette eksempel illustrerer et en-til-mange forhold: én lærer til flere kurser.

Hvorfor er det vigtigt at etablere et en-til-mange-forhold

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

Adherence to First Normal Form Design

Måske har vi oprettet en tabel, hvor vi vil registrere navnet og de underviste kurser. Vi kan designe en lærer- og kurstabel som denne:

Teacher_ID Teacher_Name Kursus
Teacher_001 Carmen Biologi
Teacher_002 Veronica Math
Teacher_003 Jorge engelsk

Hvad hvis Carmen underviser i to eller flere kurser? Vi har to muligheder med dette design. Vi kunne tilføje det til Carmens eksisterende rekord, sådan her:

Teacher_ID Lærer_Name Kursus
Teacher_001 Carmen Biologi, matematik
Teacher_002 Veronica Math
Teacher_003 Jorge engelsk

Men ovenstående design er ufleksibel og kan resultere i problemer senere, når du indsætter, redigerer eller sletter data. Det gør det svært at søge efter data.

Dette design overtræder også det første princip for databasenormalisering, First Normal Form (1NF), som siger, at hver tabelcelle skal indeholde et enkelt, diskret stykke data.

Den anden normalformregel

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

Lærer_ID Lærer_Name Kursus
Teacher_001 Carmen Biologi
Teacher_001 Carmen Math
Teacher_002 Veronica Math
Teacher_003 Jorge engelsk

Denne tilgang overholder 1NF, men er stadig dårligt databasedesign, fordi den introducerer redundans og kan svulme en stor database unødigt op. Endnu vigtigere er det, at dataene kan blive inkonsekvente.

For eksempel, hvad hvis Carmens navn blev ændret? En person, der arbejder med dataene, opdaterer muligvis hendes navn i én post og undlader at opdatere det i den anden post.

Dette design overtræder standarden Second Normal Form (2NF), som overholder 1NF og også skal undgå redundans af flere poster. 2NF-reglen opnår dette ved at adskille delmængder af data i flere tabeller og skabe en relation mellem dem.

Sådan designes en database med en-til-mange-relationer

For at implementere en en-til-mange-relation i tabellen Lærere og kurser skal du dele tabellerne op i to og forbinde dem med en fremmednøgle.

Her fjernede vi kolonnen Kursus i lærertabellen:

Lærer_ID Lærer_Name
Teacher_001 Carmen
Teacher_002 Veronica
Teacher_003 Jorge

Og her er kurstabellen. Bemærk, at dens fremmednøgle, Teacher_ID, linker et kursus til en lærer i lærertabellen:

Course_ID Course_Name Teacher_ID
Course_001 Biologi Teacher_001
Course_002 Math Teacher_001
Course_003 engelsk Teacher_003

Vi har udviklet et forhold mellem lærer- og kurstabellen ved hjælp af en fremmednøgle. Dette arrangement fortæller os, at Carmen underviser i både biologi og matematik, og at Jorge underviser i engelsk.

Vi kan se, hvordan dette design undgår enhver mulig redundans, giver individuelle lærere mulighed for at undervise i flere kurser og implementerer et en-til-mange forhold.

Anbefalede: