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

Database 存储其属性字段具有多个值的对象,database,database-design,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:

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

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的数据库设计和搜索查询提出任何建议。

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

对这些数据的查询将涉及到这个多对多表。

一个简单的“一对多”应该可以:

您可以通过将项与每个“子”表联接来进行搜索


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

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


或者您甚至可以创建一个通用模型,这样您就不局限于任何特定的属性集:

警告:这是非常灵活的,您现在只需要连接一个表,但一致性很难实现,可能需要在应用程序级别执行