【问题标题】:Trying to avoid a circular reference试图避免循环引用
【发布时间】:2012-03-09 12:10:50
【问题描述】:

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

所以这里是简单的英语。

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

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

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

【问题讨论】:

  • ssmusoke 的回答我认为是正确的。这是自引用有意义的情况。您需要处理与编程逻辑关系的嵌套性质。但是,如果您考虑最终用户,您不会想向他们展示原始配方中每种成分的全部成分。他们会自行决定是去购买牧场调料,还是点击按钮获取牧场调料配方。

标签: mysql database-design


【解决方案1】:

我建议以下表格:

a) 配方 - 名称、描述、成分和其他信息

b) 成分 - 名称、描述、来自商店(如果从商店购买,则为是或无价值)、recipieid(此成分的配方 ID)。这使得配料有配方

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

该建议是正确的,因为您最终可能会以循环形式从配料到食谱等

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

【讨论】:

    猜你喜欢
    • 2015-09-05
    • 2011-06-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多