在我的产品表中,我有一个表示属性集的字段。
属性集是属性的集合(大小,颜色等)。
每个属性都有几个值,如蓝色,绿色,红色等。
如何存储具有多个(而非固定数量)属性的产品的库存信息?
答案 0 :(得分:2)
我建议不要破坏NF1使用Entity Value Attribute模型。这也不是没有问题。维基百科文章解释了这一点,并包括使用稀疏列或XML字符串的替代方案。
答案 1 :(得分:0)
你可以这样做:
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
答案 2 :(得分:0)
通过引入“many-to-many”(此处称为ProductAttribute)来保存junction table,您可以在关系数据库中获得产品和属性之间的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