SQL循环依赖

时间:2016-01-20 13:42:26

标签: mysql sql database database-design

我正在尝试为以下实体设计数据库架构:商店,产品,折扣和买家。目标是为几种产品提供折扣活动。但是,在我对数据库模式的第一次迭代中,我可以看到存在循环依赖关系,如下所示:

enter image description here

问题是:这样的依赖是一个糟糕的SQL设计吗?另外,如何包含代表产品的买方实体和使用的折扣?谢谢。

3 个答案:

答案 0 :(得分:1)

我没有在你的模型中看到这种“循环依赖”。将其视为定向(或定向)图。从一个实体开始并且无法顺时针或逆时针返回它都是不可能的。

答案 1 :(得分:1)

我没有ERD软件,但我会这样做: sample store erd

或者:

enter image description here

答案 2 :(得分:0)

没有循环引用,根据定义不正确:例如:具有部门外键的员工(员工在工作时)和从部门到员工的外键(由其管理)。

我确实看到了一个设计缺陷:这个型号可以在商店B的商品A上打折。

如果要阻止这种情况,可以将StoreId添加到产品和折扣的主要(或备用唯一密钥),将该列添加到Product_Discounts并使其成为两个外键的一部分。

至于合并买方:您将要创建买方,销售和Sales_Items表。

  • 买家代表一个或多个零的买家......
  • 销售:代表买方购买零(不太可能),一个或多个......的事件。
  • Sales_Items 代表销售中同一产品的零个,一个或多个商品

最后,您需要 Sales_Items_Products_Discount 表来存储应用于销售商品的产品折扣。