Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Jak skutecznie modelować dziedziczenie w bazie danych?

Istnieje kilka sposobów modelowania dziedziczenia w bazie danych. To, który wybierzesz, zależy od Twoich potrzeb. Oto kilka opcji:

Tabela na typ (TPT)

Każda klasa ma swój własny stół. Klasa bazowa zawiera wszystkie elementy klasy bazowej, a każda klasa, która się z niej wywodzi, ma swoją własną tabelę, z kluczem podstawowym, który jest również kluczem obcym do tabeli klasy bazowej; klasa tabeli pochodnej zawiera tylko różne elementy.

Na przykład:

class Person {
    public int ID;
    public string FirstName;
    public string LastName;
}

class Employee : Person {
    public DateTime StartDate;
}

Dałoby to tabele takie jak:

table Person
------------
int id (PK)
string firstname
string lastname

table Employee
--------------
int id (PK, FK)
datetime startdate

Tabela na hierarchię (TPH)

Istnieje pojedyncza tabela, która reprezentuje całą hierarchię dziedziczenia, co oznacza, że ​​kilka kolumn będzie prawdopodobnie nielicznych. Dodawana jest kolumna dyskryminacyjna, która informuje system, jaki to jest typ wiersza.

Biorąc pod uwagę powyższe klasy, otrzymujesz tę tabelę:

table Person
------------
int id (PK)
int rowtype (0 = "Person", 1 = "Employee")
string firstname
string lastname
datetime startdate

Dla wszystkich wierszy, które mają typ wiersza 0 (osoba), data rozpoczęcia zawsze będzie równa null.

Stół na beton (TPC)

Każda klasa ma własną, w pełni uformowaną tabelę bez odniesień do innych tabel.

Biorąc pod uwagę powyższe klasy, otrzymujesz następujące tabele:

table Person
------------
int id (PK)
string firstname
string lastname

table Employee
--------------
int id (PK)
string firstname
string lastname
datetime startdate


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Przywracanie głównej bazy danych programu SQL Server

  2. Pobieranie tylko Miesiąca i Roku z SQL DATE

  3. Ograniczenie unikatowe SQL w wielu tabelach

  4. Metody eksportu i importu tabel bazy danych SQL Server

  5. SQL Server 2008 Pusty ciąg a spacja