我目前正在爲電子商務平臺的產品部分設計數據庫結構。它需要被設計成能夠銷售無限數量的不同類型的產品並具有無數不同的屬性。實體屬性值表設計
E.g.筆記本電腦的屬性是RAM,屏幕尺寸,重量等。書的屬性可以是作者,ISBN,出版商等。
看起來EAV結構似乎是最合適的。
- 選擇產品
- 產品屬於屬性集
- 屬性集包含屬性x和y
- 屬性x是數據類型的日期時間(存儲在attribute_values_datetime值)
- 屬性y是數據類型int(存儲在attribute_values_int中的值)
- 每個屬性定義deno TES的類型(I,E,x具有列型 - > datetype)
假設以上所述,我可以加入選擇至attribute_values_datetime表以獲得正確的數據沒有得到結果集和構建第二查詢現在桌子是已知的?會有大的性能命中構建這種類型的查詢或將在下面更合適的(雖然不太官能)
- 選擇產品
- 產品屬於屬性集
- 屬性集包含屬性X和y
- 屬性x是數據類型的日期時間但作爲TEXT存儲在ATTRIBUTE_VALUES
- 屬性y被數據int類型但作爲TEXT存儲在ATTRIBUTE_VALUES
不要使用EAV。不要介意性能問題(只會增長的大量表),考慮你將如何反對它。在大多數情況下,EAV正常化過度。 – Oded 2012-08-02 14:16:53
你將如何處理屬性,你想使用它們進行過濾嗎? – Jodrell 2012-08-02 14:17:21
我傾向於贊同@Oded,最終在數據庫中構建數據庫。我還想知道大型在線零售商採取什麼做法(好的)。 – Jodrell 2012-08-02 14:18:31