我的产品表属于特定类别,但每个类别中的产品可以包含多个元数据跟踪字段
表: products
id name category metadata
1 something 1 blue,red,purple
2 something else 2 left,right,middle
我一直在尝试考虑使用单个产品表的最佳方法,但似乎无法方便地挤压元数据。现在我已经创建了一个包含所有元数据和字段的表,用于跟踪相关类别(顺序是这样我可以通过下拉菜单等来订购它们。)
更新了表格 products
id name category metadata
1 something 1 1,2,3
2 something else 2 4,5,6
表: metadata
id category sequence option
1 1 1 blue
2 1 2 red
3 1 3 purple
4 2 1 left
5 2 2 right
6 2 3 middle
如果这种格式有意义..我正在尝试生成一个查询,它将搜索我的product表中的值并获取每个和所有相关的元值。我遇到的问题是试图在产品领域找到一个独特的价值。如果我搜索LIKE(%1%)
的MySQL,我将获得1,11,21,31等的匹配...我想在默认情况下向该字段添加一个前导和尾随逗号,然后搜索{{1}这将是独一无二的..但必须有一个更好的方式...
任何建议(关于格式或查询)?
答案 0 :(得分:4)
在单个数据库字段中使用逗号分隔值不是理想的设计。除了你提到的问题(难以搜索)之外,你的查询效率会降低,因为数据库将无法使用索引进行查找。
我建议使用与products表具有多对一关系的单独表 products_metadata 。拥有* metadata_id *和* product_id *,它是链接回products表的外键。这将使你的工作变得更加容易。
答案 1 :(得分:1)
您想要添加另一个表,该表将产品链接到其元数据。它将有两列:productid
和metadataid
,分别引用products
和metadata
表中的相关条目。然后,您不再在products
表中保留元数据,而是根据需要将JOIN
保存在一起。