Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/76.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 数据库设计-我这里有冗余吗?_Sql_Anti Patterns - Fatal编程技术网

Sql 数据库设计-我这里有冗余吗?

Sql 数据库设计-我这里有冗余吗?,sql,anti-patterns,Sql,Anti Patterns,我有四张桌子:公司、产品、客户和销售。它们的关系如下: 一个公司可以有多个产品 一家公司可以有多个客户 销售是产品和客户的产物。每个销售记录都指向一个产品和一个客户 我感到不安的是,你可以通过两种不同的途径追溯到该公司的销售。这就增加了数据完整性问题的可能性——如果产品路线说最终的母公司是A公司,而客户路线说是B公司怎么办 这听起来像是SQL反模式,但我可能错了。我能怎么办 谢谢 视情况而定。你说: 一个公司可以有多个 顾客 这是否意味着每个客户只在一家公司购物 如果不是,那么客户和公司之间

我有四张桌子:公司、产品、客户和销售。它们的关系如下:

  • 一个公司可以有多个产品
  • 一家公司可以有多个客户
  • 销售是产品和客户的产物。每个销售记录都指向一个产品和一个客户
我感到不安的是,你可以通过两种不同的途径追溯到该公司的销售。这就增加了数据完整性问题的可能性——如果产品路线说最终的母公司是A公司,而客户路线说是B公司怎么办

这听起来像是SQL反模式,但我可能错了。我能怎么办

谢谢

视情况而定。你说:

一个公司可以有多个 顾客

这是否意味着每个
客户
只在一家
公司
购物

如果不是,那么
客户
公司
之间的关系不应该由他们购买的
产品定义吗

这意味着删除
Customer
上的
fk_Company
字段(或等效字段)

但是,如果关系是客户注册的
公司
,则这是不同的

在这种情况下,如果购买的
产品
公司
客户
“所属”之间存在冲突,则这不是真正的冲突-冲突将发生在
公司
与注册在的
客户
之间,以及
客户刚刚购买的
公司
,即,不是真正的冲突

最终的问题是,
客户
公司
之间的关系是什么?客户在哪里

  • 最后购买(多余)
  • 通常是商店(冗余)
  • 首次购买(多余)
  • 已注册(可能不是多余的)

谢谢你。我可以看出,这一切都在上下文中!