Mysql
 sql >> база данни >  >> RDS >> Mysql

Абстрактна диаграма на клас от UML към ER. Възможен ? как?

Основно има три възможности за превеждане на обобщението в модел на база данни

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 към суперкласа и вероятно няколко други неща, които не съм помислете.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Система за управление на релационни бази данни (RDBMS):MSSQL срещу MySQL

  2. MySQL консолидиращи редове на таблица с припокриващи се интервали от време

  3. Mysql избира (n) редове от всяко събитие

  4. codeigniter nodejs и nowjs интеграция

  5. Повторяема работа за Laravel json api