设计实体关系 - 理论或实践解决方案?

时间:2018-01-14 14:50:02

标签: database database-design

我在设计实体模式时遇到以下问题。

让我们说我已经创建了一个充满多对多关系的模式,因为它起初似乎是一个合理的选择,但在实现过程中不需要这些关系。

例如,从理论上讲,每个县都有许多湖泊,每个湖泊都可以位于许多县。但我的数据库没有跨越县界的湖泊。 使用多对多关系是否仍然合理?它基本上会创建一个不需要的联结表,因为我可以用一对多关系来表示它。

我有一个我认为会包含很多多对多关系的地理数据库,但实际上这种关系只需要几张表。

2 个答案:

答案 0 :(得分:2)

首先:它与您的软件Functional Requirements相关。

您的系统分析师应该做出决定。系统分析师应该关注组织内的系统所有者,最终用户和其他利益相关者。

如果您为组织或公司编写项目,您应该问他们。

其次:在数据库设计中,如果您的国家/地区甚至可以拥有共同的湖泊,则应使用多对多关系。原因是项目的可扩展性。我不认为与一对多相比,多对多有很多困难。

第三:如果你有一个很少(很少)可以拥有共同湖泊的国家,我认为你可以使用这种数据建模技术:

您可以使用一对多和多对多的组合

  1. Country的主键作为F.K添加到Lake。 (一对多的关系)
  2. 使用来自Country_LakesCountry的F.Ks(与多对多关系)添加Lake等新表格
  3. 如何检测Lake类型(普通与否):如果CountryLake的FK为NULL,则此Lake很常见,您可以从Country_Lakes获取所有国家/地区。

    在这个设计中,你有一点 Nullification ,但它很少发生。

答案 1 :(得分:1)

如果您正在使用它,请保留它。之后创建多对多关系要复杂得多。

如果您不使用它,请将其删除。