具有多个属性的产品库存
在我的产品表中,我有一个表示属性集的字段。具有多个属性的产品库存
属性集是属性(大小,颜色等)的集合。
每个属性有多个值,如蓝色,绿色,红色等
我怎么会去存储库存信息产品有多个(和不固定的量)的属性?
你可以这样做:
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