试图避免循环引用

时间:2012-03-01 21:59:11

标签: mysql database-design

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

所以这里用简单的英语。

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

例如: 我想做一份沙拉(食谱)
它将有生菜,胡萝卜,洋葱(到目前为止一切都很好。只是商店买的成分。)
但我想要牧场调料。 (哦,我可以在商店买牧场调料,但我有一个牧场调料配方,我想用来做牧场调料。)

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

1 个答案:

答案 0 :(得分:2)

我建议如下表格:

a)食谱 - 名称,描述,isingredient和其他信息

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

c)recipie_ingredients - receiptieid,ingredientid(基本上这会将配方与其成分联系起来)

建议是正确的,因为你可以最终形成循环形式的成分到收件人等

更新:我建议在配方中添加一个isingridient列,以便只选择已知为成分的配方添加到Ingredient表中。这有助于减少循环引用的可能性