Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Bagaimana Anda memodelkan pewarisan secara efektif dalam database?

Ada beberapa cara untuk memodelkan pewarisan dalam database. Yang Anda pilih tergantung pada kebutuhan Anda. Berikut adalah beberapa opsi:

Tabel-Per-Jenis (TPT)

Setiap kelas memiliki meja sendiri. Kelas dasar memiliki semua elemen kelas dasar di dalamnya, dan setiap kelas yang diturunkan darinya memiliki tabelnya sendiri, dengan kunci utama yang juga merupakan kunci asing ke tabel kelas dasar; kelas tabel turunan hanya berisi elemen yang berbeda.

Jadi misalnya:

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

class Employee : Person {
    public DateTime StartDate;
}

Akan menghasilkan tabel seperti:

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

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

Tabel-Per-Hierarki (TPH)

Ada satu tabel yang mewakili semua hierarki pewarisan, yang berarti beberapa kolom mungkin akan jarang. Kolom diskriminator ditambahkan yang memberi tahu sistem jenis baris apa ini.

Mengingat kelas di atas, Anda berakhir dengan tabel ini:

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

Untuk setiap baris yang merupakan rowtype 0 (Orang), tanggal mulai akan selalu nol.

Tabel-Per-Beton (TPC)

Setiap kelas memiliki tabel yang terbentuk sepenuhnya sendiri tanpa referensi ke tabel lain.

Mengingat kelas-kelas di atas, Anda akan mendapatkan tabel-tabel ini:

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. Berbagai Cara untuk Membandingkan Skema dan Data Tabel SQL Server

  2. NEWID() vs NEWSEQUENTIALID() di SQL Server:Apa Bedanya?

  3. Ganti nama kolom SQL Server 2008

  4. Gunakan OBJECTPROPERTY() untuk Menentukan Apakah Objek adalah Tampilan di SQL Server

  5. Internal Replikasi Transaksional SQL Server – Bagian 2