2012-09-24 15 views
2

在數據庫中的關係我有一個產品表作爲節點ID | ParentNodeID |節點名稱其中「節點」可以是「產品」或「類別」。舉例來說:我如何保持「規範值(S)」的產品

NodeID | ParentNodeID |節點名

0 || ||根

1 || 0 ||電子產品

2 || 1 ||手機

3 || 2 ||三星

4 || 2 || Apple

5 || 2 ||諾基亞

6 || 5 ||諾基亞1100

7 || 5 ||諾基亞Lumia 800

等..

現在,根>電子>諾基亞是分類和諾基亞1100的產品。 對於每種產品,我都需要一套與產品相關的特定屬性(規格)。 我保持這種關係在表ProductAttributes的列:屬性Id || AttributeName ||值|| NodeID其中我將保留特定NodeID(例如諾基亞1100)的所有屬性及其相應的值。

因此,當用戶發佈「諾基亞1100」時,他將在UI中擁有所有具有預填充值的屬性。

現在假設用戶正在張貼,不存在在數據庫中,如。說他張貼「三星焦點」。他現在可以選擇在這種情況下他將發佈此請求的「類別」,即「移動設備」。

所以我想要的是,用戶應該只顯示與手機相關的屬性(有/沒有默認值),然後用戶可以選擇哪個適用,然後發佈請求。爲此,我正在考慮將一些默認屬性添加到「類別」中,只要他選擇該類別,這些屬性就可以使用。

,但我無法想出這種方法和關係正確的表結構。我的意思是,單個類別可能有多個屬性,每個屬性可能有多個值。

我希望我能夠描繪我想在這裏做什麼, 任何幫助表示讚賞。

回答

0

這聽起來像你正在尋找一個EAV(實體屬性值)模式

http://en.wikipedia.org/wiki/Entity%E2%80%93attribute%E2%80%93value_model

要知道,雖然這種做法(一說反模式)與陷阱散落。

+0

這似乎是一個常見問題,但我還沒有看到如何處理我正在嘗試做的一個很好的答案。我知道有很多網站跟蹤這類數據,但我發現很難想象他們有數千個不同的表格以便爲每種產品類型提供「詳細信息」表格。是否有可能他們都在使用EAV,並且EAV-naysayers在技術上正確的時候誇大了使用該類型模型的性能損失? – Nitish

相關問題