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
Userduplikeres i hver underklassetabel - Fremmednøgler til
Userskal opdeles i tre FK-felter. En tilAdmin, en forTeacherog 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
Userdata - 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
StudentogTeacherer aldrig udfyldt forAdminsog omvendt - Datavalidering såsom obligatoriske felter for en konkret klasse såsom
Studentbliver ret kompleks, da det ikke længere er en simpelNot Nullbegræ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
Userrecord har præcis énAdmin,TeacherellerStudentoptage.
- 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.