2010-07-18 108 views
5

有幾種方法如何存儲在關係數據庫關係數據:實體繼承方法。最佳實踐

比如有個人實體(20個基本屬性),學生實體(一樣的人,但一些新的特定字段存在),員工實體層級(與人一樣,但有一些新的領域存在)等等

當你勸告使用(而不是使用)以下數據建模方法:

  • 一個大表與所有可能的領域+ personType標記字段(學生或員工)
  • 表繼承
  • 一個表與XML場(或者另一種數據類型)來存儲所有的自定義字段
  • 別的東西也關係...

預先感謝您!

回答

6

數據庫建模事實而不是對象,每個表都應該對相對獨立的事實進行建模。這樣做的結果是,你的表應該是這個樣子:

person { person_id PK, name, dob, ... } 
student { person_id PK FK(person.person_id), admission_id, year_started, ... } 
employee { person_id PK FK(person.person_id), salary_bracket, ... } 

另外一個後果是,學生也可以是員工,不是會繼承圖這或許機型現實生活更接近。

0

如果您使用的是ORM來實現您的類,您正在使用的ORM工具將爲您提供選項,通常有兩個選項,一個類一個表或一個父類一個表和每個子類的每個表。我使用Devexpress.com的XPO,一個ORM框架。它提供了這兩種選擇。

如果您使用ORM,恐怕沒有其他通用選項。

Ying