有幾種方法如何存儲在關係數據庫關係數據:實體繼承方法。最佳實踐
比如有個人實體(20個基本屬性),學生實體(一樣的人,但一些新的特定字段存在),員工實體層級(與人一樣,但有一些新的領域存在)等等
當你勸告使用(而不是使用)以下數據建模方法:
- 一個大表與所有可能的領域+ personType標記字段(學生或員工)
- 表繼承
- 一個表與XML場(或者另一種數據類型)來存儲所有的自定義字段
- 別的東西也關係...
預先感謝您!
有幾種方法如何存儲在關係數據庫關係數據:實體繼承方法。最佳實踐
比如有個人實體(20個基本屬性),學生實體(一樣的人,但一些新的特定字段存在),員工實體層級(與人一樣,但有一些新的領域存在)等等
當你勸告使用(而不是使用)以下數據建模方法:
預先感謝您!
數據庫建模事實而不是對象,每個表都應該對相對獨立的事實進行建模。這樣做的結果是,你的表應該是這個樣子:
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, ... }
另外一個後果是,學生也可以是員工,不是會繼承圖這或許機型現實生活更接近。
看看hibernate inheritance mapping docs。在那裏你會找到三種常用的方法,並列出每種方法的優缺點。
如果您使用的是ORM來實現您的類,您正在使用的ORM工具將爲您提供選項,通常有兩個選項,一個類一個表或一個父類一個表和每個子類的每個表。我使用Devexpress.com的XPO,一個ORM框架。它提供了這兩種選擇。
如果您使用ORM,恐怕沒有其他通用選項。
Ying