Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Klasa abstrakcyjna z diagramu UML do ER. Możliwy ? Jak?

Zasadniczo istnieją trzy możliwości przetłumaczenia uogólnienia na model bazy danych

1. Jeden stół na klasę betonu

Utwórz tabele Admin , Teacher i Student . Każda z tych tabel zawiera kolumny dla wszystkich atrybutów i relacji User

  • Pro
    • Wszystkie pola konkretnej podklasy znajdują się w tej samej tabeli, więc nie jest potrzebne łączenie, aby uzyskać wszystkie dane Studenta
    • Łatwe ograniczenia walidacji danych (takie jak obowiązkowe pola dla Student )
  • Kon
    • Wszystkie pola User są zduplikowane w każdej tabeli podklas
    • Klucze obce do User muszą być podzielone na trzy pola FK. Jeden dla Admin , jeden dla Teacher i jeden dla Student .

2. Na stole dla całego zestawu generalizacji

W tym przypadku masz tylko jedną tabelę wywołania User który zawiera wszystkie pola User + wszystkie pola wszystkich podklas User

  • Pro
    • Wszystkie pola znajdują się w tej samej tabeli, więc nie jest potrzebne połączenie, aby uzyskać wszystkich User dane
    • Brak podziału FK na User
  • Kon
    • Istnieje wiele pól, które nigdy nie są używane. Wszystkie pola specyficzne dla Student i Teacher nigdy nie są wypełniane dla Admins i odwrotnie
    • Weryfikacja danych, takich jak pola obowiązkowe dla konkretnej klasy, takiej jak Student stają się dość skomplikowane, ponieważ nie są już prostym Not Null ograniczenie.

3. Jeden stół na konkretną klasę i jeden na superklasę

W tym przypadku tworzysz tabele dla każdej z konkretnych podklas i tworzysz tabelę dla klasy User . Każda z konkretnych tabel podklas ma obowiązkowy FK dla User

  • Pro
    • Najbardziej znormalizowany schemat:brak powtarzających się pól dla atrybutów użytkownika i brak nieużywanych pól.
    • Brak podziału FK na User
    • Łatwe ograniczenia walidacji danych (takie jak obowiązkowe pola dla Student )
  • Kon
    • Musisz wysłać zapytanie do dwóch tabel, jeśli chcesz uzyskać wszystkie dane Student
    • Złożone reguły walidacji, aby upewnić się, że każdy User rekord ma dokładnie jednego Admin , Teacher lub Student rekord.

Wybór jednej z tych opcji zależy od wielu czynników, takich jak liczba podklas, liczba atrybutów w podklasie lub nadklasie, liczba FK w nadklasie i prawdopodobnie kilku innych rzeczy, których nie zrobiłem pomyśl o tym.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak utworzyć odwrotną zmienną uporządkowaną w moim sql

  2. mysql wildcard (ignoruj ​​jeden/dwa znaki w wyszukiwaniu)

  3. Kolejka instrukcji Insert MySQL

  4. Czy MySQL zwiera funkcję IF()?

  5. Liczba innych wierszy w tabeli o tej samej wartości