Основно има три възможности за превеждане на обобщението в модел на база данни
1. Една таблица за всеки клас бетон
Създайте таблици Admin , Teacher и Student . Всяка от тези таблици съдържа колони за всички атрибути и отношения на User
- За
- Всички полета на конкретен подклас са в една и съща таблица, така че не е необходимо присъединяване, за да получите всички данни за ученици
- Ограничения за лесно валидиране на данни (като задължителни полета за
Student)
- Кон
- Всички полета на
Userсе дублират във всяка таблица на подклас - Външни ключове към
Userтрябва да бъдат разделени на три FK полета. Един заAdmin, един заTeacherи един заStudent.
- Всички полета на
2. На масата за целия комплект за обобщение
В този случай имате само едно извикване на таблица User който съдържа всички полета на User + всички полета на всички подкласове на User
- За
- Всички полета са в една и съща таблица, така че не е необходимо присъединяване, за да получите всички
Userданни - Без разделяне на FK на
User
- Всички полета са в една и съща таблица, така че не е необходимо присъединяване, за да получите всички
- Кон
- Има куп полета, които никога не се използват. Всички полета са специфични за
StudentиTeacherникога не се попълват заAdminsи обратно - Потвърждение на данни като задължителни полета за конкретен клас като
Studentстава доста сложно, тъй като вече не е простоNot Nullограничение.
- Има куп полета, които никога не се използват. Всички полета са специфични за
3. Една таблица за конкретен клас и една за суперклас
В този случай създавате таблици за всеки от конкретните подкласове и създавате таблица за класа User . Всяка от конкретните таблици на подклас има задължителен FK към User
- За
- Най-нормализирана схема:Без повтарящи се полета за атрибутите на потребителя и без неизползвани полета.
- Без разделяне на FK на
User - Ограничения за лесно валидиране на данни (като задължителни полета за
Student)
- Кон
- Трябва да направите заявка за две таблици, ако искате всички данни на
Student - Комплексни правила за проверка, за да сте сигурни, че всеки
Userзаписът има точно единAdmin,TeacherилиStudentзапис.
- Трябва да направите заявка за две таблици, ако искате всички данни на
Коя от тези опции ще изберете зависи от редица неща като броя на подкласовете, броя на атрибутите в подклас или суперклас, броя на FK към суперкласа и вероятно няколко други неща, които не съм помислете.