gpt4 book ai didi

mysql - 数据库设计问题——试图避免循环引用

转载 作者:行者123 更新时间:2023-11-29 04:13:10 27 4
gpt4 key购买 nike

我已经用了一天多的时间,试图弄清楚如何为我正在为拥有一家面包店的 friend 开发的应用程序构建数据库 (MySQL) 的最佳模型。假设如下:

  • 许多(外部)面包师生产许多产品
  • BakersProducts 由某些工作人员每两周更新一次,这些工作人员要么调用面包师询问产品价格,要么面包师自己通过他们的价格表传真,然后工作人员通过前端 UI 更新。
  • 经理应该能够根据她预期拥有的产品生成订单。

因此,前端 UI 必须能够让经理在订单中纯粹选择她想要的产品,然后为她提供一个面包师列表,供她为订单中的每个产品选择。

换句话说,Orders_has_Products 还应该包含对 BakersProducts.bpID 的引用。我敢肯定,如果我这样做,那么我会创建一个对 Products 的(某种)循环引用。

enter image description here

我确定我的做法是错误的,非常感谢任何人就如何重组我的设计以适应所选产品价格的建议 - 即。包括 BakersProducts.bpID

谢谢!

最佳答案

这不是循环引用,因为

  • Order_has_products 引用产品
  • Order_has_products 引用 BakersProducts
  • BakersProducts 引用产品

循环引用是,例如,

  • Order_has_products 引用产品
  • 产品引用 BakersProducts
  • BakersProducts 引用 Order_has_products

除此之外,循环引用在数据库中是比较正常的(即带有经理字段的员工表,其中经理是她自己,员工是一个表循环引用)

您的设计只是一个简单的冗余,因为一个产品在 Order_has_products 表中引用了两次 - 一次直接来自 Products 表,一次通过相关的 BakersProducts 记录。存在不同步的可能性,但是,由于您声明业务规则是产品是在面包师之前选择的,所以这完全没问题。

我会包括 productID,即使它是相反的,因为一点非规范化在加速查询时可以有很长的路要走,因为否则你将不得不扫描 BakersProducts 表,即使是简单的问题,比如,'我们星期三有百吉饼吗?”

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

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com