数据库设计问题,我应该防止过关系吗?

时间:2014-07-16 01:54:50

标签: mysql database database-design

我有一个数据库似乎对我的数据库设计知识有挑战性。 我会尝试解释,然后我会问这个问题。

我有一系列与系统互动的公司,这些公司可以在我的国家和我的国家运营,所有公司都致力于捕鱼活动。这些公司可以拥有产品供应商或只是自己钓鱼。这些提供商可以在任何国家运营。从供应商处购买的产品(大多数是冷冻鱼)也可以来自任何国家,并不一定是供应商的国家。 当然,我有一个国家表格,其默认值设置为我的国家/地区,该表格也由提供商和产品引用。

This is a very simplified version of my data model

嗯,通过这种设计,没有办法避免关系交叉。但我真正的问题是,

  1. 允许这种情况发生是一种好习惯吗?
  2. 如果没有,我应该如何重新设计它来修复它?
  3. 如果是的话,为什么每个人都告诉我要阻止这种关系呢?
  4. 谢谢!

2 个答案:

答案 0 :(得分:2)

您的数据库设计应该没问题。需要与不同国家定义的东西必须是。逻辑上没有“交叉”的东西。

在数据库设计中你应该避免的一件事是循环关系,这是需要B,B需要C和C需要A。

答案 1 :(得分:0)

好吧,让我们分析一下情况:

  

这些公司可以在我的国家和我的国家/地区运营

我假设这些公司由user表代表;从技术上讲,他们不需要一个国家,但展望未来你可能希望有来自其他国家的公司。

  

这些提供商可以在任何国家/地区运营。

好的,provider肯定需要他们自己的国家/地区。

  

从供应商处购买的产品(大多数是冷冻鱼)也可以来自任何国家,而且不一定是供应商的国家。

所以product也需要他们自己的国家/地区字段。

基本上,您需要代表X国的产品,从Y国的供应商处购买并由Z国的公司提供。您设计的模型似乎正确地反映了这些关系。