存储其属性字段具有多个值的对象

时间:2012-02-04 22:30:31

标签: database database-design

我有一个数据存储要求,其中每个项目都有多个字段,每个字段可能包含多个值(字符串)。我需要运行一个搜索查询,其中将根据一个或多个字段值选择项目。这是我需要的结构:

Name:     (this will be the name of an item)
Season:   (name of the season)
Taste:    (1 taste or several)
Funktion: (1 or several option)
Weight:   (1 or several)
Volume:   (1 volume or several)
Tips:     (for comments)
Flavor combinations: (1 or several)
Matching flavors: (several)

请关于MySql的数据库设计搜索查询的任何建议。

2 个答案:

答案 0 :(得分:1)

简单的“一对多”应该有效:

enter image description here

通过使用每个“子”表联接ITEM进行搜索。


如果您希望限制属性值,您可以执行“真正的”多对多:

enter image description here

因此,一个项目不能与TASTE表格中已有的味道相关联(等等其他类型的属性)。


或者您甚至可以制作通用模型,因此您不限于任何特定的属性集:

enter image description here

警告:这非常灵活,您现在只需要使用一个表来加入,但是一致性更难以实施,并且可能需要在应用程序级别进行。

答案 1 :(得分:0)

多值属性的标准设计是多对多表 - 这通常包括由两个外键组成的复合主键 - 每个连接表一个。

关于这些的查询将涉及这个多对多表。