我必須設計一個模式來存儲具有許多屬性但很少共同的對象。數據庫設計 - 一個表中有許多字段,許多表中有一個字段或抽象表?
我在這裏找到了一些解決方案,但我仍然不相信要做的最好的事情。我看到這樣做的四種方式:
許多領域- 一個表:這可能會導致許多
NULL
值,以及一個很難的時候,需要來添加一些屬性或modifiy一些數據類型。 - 爲每個屬性創建一個新表:這使得添加和更新列變得容易,並且保留了搜索功能,儘管每個
SELECT
都會導致很多JOIN
。 - 創建一個表中的每個物業類型,例如:標籤,數量,間隔等我不知道在這種情況下,如果我需要區分浮動,小數,整數等
- 創建抽象表(我在這裏讀取它稱爲Observation Pattern),它存儲屬性名稱和數據類型。
我應該遵循哪些標準,我應該回答哪些問題以在這些解決方案之間進行選擇?
感謝
您是否考慮過使用[文檔數據庫](http://en.wikipedia.org/wiki/Document-oriented_database)而不是關係數據庫? – Oded 2011-04-23 18:58:06
「這取決於」。除非有*證明需要*去其他路由之一(將* volatile *用戶定義的字典映射到表列上,否則我會留在#1中作爲「開發人員控制的模式」),通常是#1的輸出,但考慮稀疏列等)。應該注意「親吻」和「只做謹慎的事」。 – 2011-04-23 19:02:16