我在设计实体模式时遇到以下问题。
让我们说我已经创建了一个充满多对多关系的模式,因为它起初似乎是一个合理的选择,但在实现过程中不需要这些关系。
例如,从理论上讲,每个县都有许多湖泊,每个湖泊都可以位于许多县。但我的数据库没有跨越县界的湖泊。 使用多对多关系是否仍然合理?它基本上会创建一个不需要的联结表,因为我可以用一对多关系来表示它。
我有一个我认为会包含很多多对多关系的地理数据库,但实际上这种关系只需要几张表。
答案 0 :(得分:2)
首先:它与您的软件Functional Requirements相关。
您的系统分析师应该做出决定。系统分析师应该关注组织内的系统所有者,最终用户和其他利益相关者。
如果您为组织或公司编写项目,您应该问他们。
其次:在数据库设计中,如果您的国家/地区甚至可以拥有共同的湖泊,则应使用多对多关系。原因是项目的可扩展性。我不认为与一对多相比,多对多有很多困难。
第三:如果你有一个很少(很少)可以拥有共同湖泊的国家,我认为你可以使用这种数据建模技术:
您可以使用一对多和多对多的组合。
Country
的主键作为F.K添加到Lake
。 (一对多的关系)Country_Lakes
和Country
的F.Ks(与多对多关系)添加Lake
等新表格如何检测Lake
类型(普通与否):如果Country
中Lake
的FK为NULL
,则此Lake
很常见,您可以从Country_Lakes
获取所有国家/地区。
在这个设计中,你有一点 Nullification ,但它很少发生。
答案 1 :(得分:1)
如果您正在使用它,请保留它。之后创建多对多关系要复杂得多。
如果您不使用它,请将其删除。