iT邦幫忙

0

資料表共用的設計模式可行嗎?

經常看到很多 OPEN SOURCE 的 CMS 的資料庫規化都是使用共用資料表的模式,比如以開發使用者系統來說,可能會分為有會員系統、管理員系統、員工系統、經銷商系統,我看過很多案列都是使用所謂的共用資料表,例如就只用一個 user 表,就放了所有的會員、管理員、員工、經銷等所有使用者資料,然後再用一個關聯值來區分不同類型的使用者,我覺得這似乎是一種不錯的設計模式,因為當我們在開發一種類型的系統時,基本上很多業務邏輯本來都是共用的 model,而且在 oop 裡我們也一直努力把業務邏輯抽像化及分離,這樣的設計模式移值到資料庫裡,也可以幫我們減少一直做重覆的事情、也避免一直建立很類似的資料表,對於維護性而言也容易許多!? 但是我覺得疑惑的是,是否真如想像中完美? 因為我一直都沒有看過這樣的學述討論? 這樣的設計模式是否會對資料庫效能帶來衝擊? 以及這樣會否違反正規化原則? 可否請大家共同探討這種設計模式的優缺點?

2 個回答

4
spockeureka
iT邦研究生 2 級 ‧ 2013-11-02 00:24:23
最佳解答

1,是可行的,從實務來講<1>誠如您所說,減少類似資料表的重複建立.<2>這資料表屬於查詢
機會多於異動機會的基礎資料表.
從學術上而言,<1>這些資料表因為經常被查詢,資料庫管理系統,會放在cache和
memory內,減少從硬碟存取.
<2>從關聯代數的投影而言,可以達到查詢最佳化的目地.
2,沒有違反正規化問題,資料表由於應用關係,會有一個類別屬性,參考外部關聯到另一個記錄會員系
統、管理員系統、員工系統、經銷商系統的基底資料表.
拙見希望能回答您的問題.

8
海綿寶寶
iT邦超人 1 級 ‧ 2013-11-01 14:16:45

jasper3891提到:
以及這樣會否違反正規化原則?

你描述的
正是正規化原則第一運動定律

請參考微軟對正規化的說明

我要發表回答

立即登入回答