Der er grundlæggende tre muligheder for at oversætte generalisering til en databasemodel
1. Et bord pr. betonklasse
Opret tabeller Admin
, Teacher
og Student
. Hver af disse tabeller indeholder kolonner for alle attributter og relationer for User
- Pro
- Alle felter i en konkret underklasse er i den samme tabel, så der er ikke behov for join for at få alle elevdata
- Lette datavalideringsbegrænsninger (såsom obligatoriske felter for
Student
)
- Kont
- Alle felter for
User
duplikeres i hver underklassetabel - Fremmednøgler til
User
skal opdeles i tre FK-felter. En tilAdmin
, en forTeacher
og en tilStudent
.
- Alle felter for
2. På bordet for hele generaliseringssæt
I dette tilfælde har du kun ét tabelkald User
der indeholder alle felter for User
+ alle felter i alle underklasser af User
- Pro
- Alle felter er i samme tabel, så det er ikke nødvendigt at tilslutte sig for at få alle
User
data - Ingen opdeling af FK'er til
User
- Alle felter er i samme tabel, så det er ikke nødvendigt at tilslutte sig for at få alle
- Kont
- Der er en masse felter, som aldrig bliver brugt. Alle felter, der er specifikke for
Student
ogTeacher
er aldrig udfyldt forAdmins
og omvendt - Datavalidering såsom obligatoriske felter for en konkret klasse såsom
Student
bliver ret kompleks, da det ikke længere er en simpelNot Null
begrænsning.
- Der er en masse felter, som aldrig bliver brugt. Alle felter, der er specifikke for
3. Et bord pr. betonklasse og et til superklassen
I dette tilfælde opretter du tabeller for hver af de konkrete underklasser, og du opretter en tabel for klassen User
. Hver af de konkrete underklassetabeller har en obligatorisk FK til User
- Pro
- Mest normaliserede skema:Ingen gentagne felter for brugerens attributter og ingen ubrugte felter.
- Ingen opdeling af FK'er til
User
- Lette datavalideringsbegrænsninger (såsom obligatoriske felter for
Student
)
- Kont
- Du skal forespørge to tabeller, hvis du vil have alle data fra en
Student
- Komplekse valideringsregler for at sikre, at hver
User
record har præcis énAdmin
,Teacher
ellerStudent
optage.
- Du skal forespørge to tabeller, hvis du vil have alle data fra en
Hvilken af disse muligheder du vælger afhænger af en række ting såsom antallet af underklasser, antallet af attributter i enten underklasse eller superklasse, antallet af FK'er til superklassen og sikkert et par andre ting, jeg ikke gjorde. tænke over.