mysql - 具有类似数组支持的数据库?

标签 mysql sql database

所以我有一些信息要存储,让我们把它简化为食物来创建一个示例。 一份食谱包含一种或多种成分,每种成分也有一个数量。

所以一个菜谱(称为菜谱的表中的一行)可以包含: 编号: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/

相关文章:

java - 如何正确实现获取对象列表的 Hibernate NamedQuery?

ruby-on-rails - 在 Heroku 部署中创建 postgres 数据库

php - 将两个实体合并到一个表中

mysql - SQL 查询 - 从多个匹配中过滤结果

mysql - 多边形内多边形的更好的表格布局是什么

mysql - 如何使用 MySQL 有条件地创建索引?

php - MySql - 获取满足条件的下一个日期

mysql - 我想要该特定股票,最后两条平均价格记录是 < 当前价格(按 Scrip_Id、日期排序)

php - 记录每行对 MySQL 表行的命中

MySQL 错误代码 : 1349. View 的 SELECT 包含 FROM 子句中的子查询