在我的產品表中,我有一個表示屬性集的字段。具有多個屬性的產品庫存
屬性集是屬性(大小,顏色等)的集合。
每個屬性有多個值,如藍色,綠色,紅色等
我怎麼會去存儲庫存信息產品有多個(和不固定的量)的屬性?
在我的產品表中,我有一個表示屬性集的字段。具有多個屬性的產品庫存
屬性集是屬性(大小,顏色等)的集合。
每個屬性有多個值,如藍色,綠色,紅色等
我怎麼會去存儲庫存信息產品有多個(和不固定的量)的屬性?
我會建議,而不是打破NF1使用Entity Value Attribute模型。這也不是沒有問題。維基百科文章解釋了這一點,並且包括了替代方案,包括使用稀疏列或XML字符串。
你可以這樣做:
products
--------
id
name
attributes
----------
id
name
value
product_attributes
------------------
id
product_id
attribute_id
或者
products
--------
id
name
attributes
----------
id
name
product_attributes
------------------
id
product_id
attribute_id
value
SELECT * FROM products,
(SELECT * FROM product_attributes LEFT JOIN products ON products.id =
product_attributes.product_id) AS prod_attr
LEFT JOIN attributes ON prod_attr.attribute_id = attributes.id
我爲你所描述的一切設置了表格。我正在尋找最佳解決方案,以便在產品具有多個屬性時跟蹤庫存。 – OMGKurtNilsen 2011-04-05 23:20:32
也許你可以用一個例子來解釋一下嗎?該模式允許產品具有任意數量的屬性。 – Raisen 2011-04-05 23:24:58
是的,但我想根據其屬性跟蹤產品的庫存。說5個綠色XL的T恤,7個藍色的小T恤。但是我不知道每個產品會擁有多少屬性。 – OMGKurtNilsen 2011-04-05 23:28:45
你可以得到產品之間的many-to-many關係,並通過引入「junction table」(這裏稱爲ProductAttribute)在關係數據庫屬性持有associative entities:
Product <--one-to-many--> ProductAttribute <--many-to-one--> Attribute
-------- ---------------- ---------
PK: id PK: id PK: id
name FK: product_id name
FK: attribute_id
我想我可以設置每3個屬性的限制屬性集,並使庫存表如下所示:(product_id,attribute1value,attribute2value,attribute3value,itemsinstock)。這可能是最簡單的選擇? – OMGKurtNilsen 2011-04-05 23:33:37