所以我有一些信息要存储,让我们把它简化为食物来创建一个示例。 一份食谱包含一种或多种成分,每种成分也有一个数量。
所以一个菜谱(称为菜谱的表中的一行)可以包含:
编号:0
名称:恶心的东西
成分 id1 : 0
配料量1:20
成分id2:1
配料量2:6
..ETC
到目前为止,我只有 mysql 的经验,但我愿意学习。本质上,我可以将成分序列化为一个字符串并存储该字符串,然后使用 LIKE 运算符查找具有特定成分的所有食谱……但我会厌恶这样的解决方案。
目标是让最终用户能够向服务器提供成分列表以获取返回的食谱列表,这些食谱可以使用这些成分制作。
如果不使用 LIKE 运算符,我如何做这样的事情?
最佳答案
您应该将其实现为单独的表:
Recipe('id', 'name'...)
Ingredients('id', 'recipe_id', 'name', 'amount')
然后,您可以通过 WHERE recipe_id = x
简单地获取所有成分
此外,如果您想与任何食谱分享配料。你应该使用树表,比如:
Recipe('id', 'name')
Ingredients('id', 'name')
RecIngr('recipe_id', 'ingr_id', 'amount')
然后,你可以通过join获取所有配方成分:
select i.name, ri.amount From Ingredients i
inner join RecIngr ri on ri.ingr_id=i.id
where ri.recipe_id = x
关于mysql - 具有类似数组支持的数据库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27093730/