mysql - 试图避免循环引用

标签 mysql database-design

我正在建立一个新的数据库,我遇到了一个循环引用,我不确定设计这个的最佳方法。

所以这里是简单的英语。

我有一个食谱。食谱需要配料。这一切都很好,除了食谱中的一种成分可能需要另一个食谱或者它可能是商店购买的元素。

例如: 我想做沙拉(食谱)
它会有生菜、胡萝卜、洋葱(到目前为止都很好。只是储存购买的原料。)
但我想要牧场沙拉酱。 (哦,哦,我可以在商店购买牧场沙拉酱,但我有一个牧场沙拉酱食谱,我想用它来制作牧场沙拉酱。)

您将如何以最佳方式创建食谱和配料表?我已经准备好如何去做,但它涉及循环引用,所有网站都说远离它。

最佳答案

我建议使用以下表格:

a) 食谱 - 名称、描述、成分和其他信息

b) 成分 - 名称、描述、fromstore(如果是从商店购买的,则有或没有值)、recipieid(该成分的配方 ID)。这使配料具有配方

c) recipie_ingredients - receipieid, ingredientid(基本上这将食谱与其成分联系起来)

这个建议是正确的,因为你可以在循环中从成分到食谱等结束

更新:我建议在食谱中添加一个 isingridient 列,这样只有已知是成分的食谱才可选择添加到成分表中。这有助于减少循环引用的机会

关于mysql - 试图避免循环引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9524823/

相关文章:

MySQL 左连接非常慢,并且通常会永远挂起

php - 如何根据id获取页码

javascript - 关于如何将 pos 系统上的交易数据插入数据库的想法?

mysql - 只列出在 mysql 中出现三次的行

mysql - 在同一个表中同时拥有主键和外键

Facebook 照片重命名约定

javascript - 我想在node.js中使用mysql函数的变量到外部

mysql - 具有多个标志的表

php - 创建用户登录系统 : Put logic in Code or Database

mysql - 用户首选项/设置的 ERD