V zásadě existují tři možnosti, jak převést zobecnění do databázového modelu
1. Jedna tabulka na betonovou třídu
Vytvořte tabulky Admin , Teacher a Student . Každá z těchto tabulek obsahuje sloupce pro všechny atributy a vztahy User
- Pro
- Všechna pole konkrétní podtřídy jsou ve stejné tabulce, takže k získání všech dat studentů není potřeba spojení
- Snadná omezení ověřování dat (jako jsou povinná pole pro
Student)
- Kon
- Všechna pole
Userjsou duplikovány v každé tabulce podtříd - Cizí klíče pro
Usermusí být rozdělena do tří polí FK. Jeden proAdmin, jeden proTeachera jeden proStudent.
- Všechna pole
2. Na stole pro celou sadu zobecnění
V tomto případě máte pouze jedno volání tabulky User který obsahuje všechna pole User + všechna pole všech podtříd User
- Pro
- Všechna pole jsou ve stejné tabulce, takže k získání všech
Usernení potřeba spojení údaje - Žádné rozdělení FK na
User
- Všechna pole jsou ve stejné tabulce, takže k získání všech
- Kon
- Existuje spousta polí, která se nikdy nepoužívají. Všechna pole specifická pro
StudentaTeacherse uAdminsnikdy nevyplňují a naopak - Ověření dat, jako jsou povinná pole pro konkrétní třídu, jako je
Studentse stává poměrně složitým, protože již není jednoduchýmNot Nullomezení.
- Existuje spousta polí, která se nikdy nepoužívají. Všechna pole specifická pro
3. Jedna tabulka pro konkrétní třídu a jedna pro nadtřídu
V tomto případě vytvoříte tabulky pro každou z konkrétních podtříd a vytvoříte tabulku pro třídu User . Každá z konkrétních tabulek podtříd má povinný FK pro User
- Pro
- Nejnormalizovanější schéma:Žádná opakovaná pole pro atributy uživatele a žádná nepoužívaná pole.
- Žádné rozdělení FK na
User - Snadná omezení ověřování dat (jako jsou povinná pole pro
Student)
- Kon
- Pokud chcete všechna data
Student, musíte zadat dotaz do dvou tabulek - Složitá ověřovací pravidla, která zajistí, aby každý
Userzáznam má právě jednohoAdmin,TeacherneboStudentzáznam.
- Pokud chcete všechna data
Kterou z těchto možností zvolíte, závisí na řadě věcí, jako je počet podtříd, počet atributů v podtřídě nebo nadtřídě, počet FK do nadtřídy a pravděpodobně na několika dalších věcech, které jsem neznal. přemýšlejte.