我有一个名为product的模型和表。每个产品都有大约100个属性。每个属性都是一个字符串。我应该简单地将所有这些属性添加到产品表中吗?或者更好的是创建几个子模型并通过has_many / belongs_to关联访问它们?我计划有一个页面来加载所有这些属性。我将是唯一设置这些属性的人。还有其他方法可以考虑这样做吗?也许我可以将所有内容保存到单个文本数据类型行中,并以某种方式将其格式化,甚至只需将其全部写入常规HTML中。
答案 0 :(得分:0)
我想建议以下设计。
Attribute Table -- AttributeId (primary key), AttributeName
Product Table -- ProductId (primary key),
other product related informations(except attributes).
ProductAttribute Table -- ProductId(foreign key), AttributeId(foreign key)
如果每个产品的每个属性都有不同的值,那么您可以考虑这样的ProductAttribute表:
ProductAttribute Table -- ProductId(foreign key), AttributeId(foreign key),
AttributeValue
修改强>:
您不需要制作100张桌子。根据我的概念你需要3张桌子。现在,Attribute
表将有100行,每个属性一个。假设您有5个属性a1, a2, a3, a4, a5
和两个产品p1,p2
。然后,表格将如下所示:
Attribute
---------
AttributeId | AttributeName
---------------------------
1 | a1
2 | a2
3 | a3
4 | a4
5 | a5
Product
-------
ProductId | ProductName
-----------------------
1 | p1
2 | p2
ProductAttribute
----------------
ProductId | AttributeId | Value
--------------------------------
1 | 1 | value1
1 | 2 | value2
1 | 3 | value3
1 | 4 | value4
1 | 5 | value5
1 | 1 | value6
1 | 2 | value7
1 | 3 | value8
答案 1 :(得分:0)
XML是最好的答案。您仍然可以为每一行提供不同的属性。 并且数据将在单个查询中提供。