SORU
10 EKİM 2008, Cuma


Ne kadar etkili bir veritabanında kalıtım modeli musunuz?

Veritabanlarında modelleme miras için en iyi uygulamalar nelerdir?

Takaslar (örneğin queriability) nelerdir?

(SQL Server ile en çok ilgilenen ve .NET, ama aynı zamanda diğer platformlarda bu sorunu gidermek nasıl anlamak istiyorum.)

CEVAP
10 EKİM 2008, Cuma


Bir veritabanında kalıtım modeli için çeşitli yollar vardır. Hangi seçeneği seçerseniz seçin, sizin ihtiyaçlarınıza bağlıdır. Burada birkaç seçenek vardır:

Masa Başı Türü (TPT)

Her sınıf kendi tablo vardır. Taban sınıf olan base sınıfının elemanları ve her bir sınıf türetir onu kendi tablo ile birincil anahtar ayrıca bir yabancı anahtar için temel sınıf, tablo, tablo türetilmiş sınıf içeren tek farklı unsurlar.

Örneğin:

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

class Employee : Person {
    public DateTime StartDate;
}

Tabloları neden istiyor:

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

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

Masa Başına Hiyerarşi (TPH)

Sütunların birkaç muhtemelen seyrek olacak demek ki tüm miras hiyerarşisi, temsil eden tek bir tablo var. Ayırıcısını bir sütun bu nasıl bir sistem söyler eklenir.

Yukarıdaki sınıfları dikkate alındığında, bu tablo ile sonuna kadar:

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

0 rowtype olan herhangi bir satır için (Kişi), burada her zaman boş olacaktır.

Masa Başına Beton (TCK)

Her sınıf referansım yok Diğer tablolar ile eksiksiz kendi tablo vardır.

Yukarıdaki sınıfları dikkate alındığında, bu tablo ile sonuna kadar:

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

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

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • PhoneArena

    PhoneArena

    7 NİSAN 2006
  • PlayStation

    PlayStation

    16 Aralık 2005
  • tseyina

    tseyina

    2 AĞUSTOS 2006