我试图重构遗留数据库架构的某些部分,但在设置正确的设计方面遇到了麻烦。
有问题的实体是:
样本,论文,研究
论文与许多样本相关 研究与许多样本有关
论文和研究各自的属性彼此不相容样本可与多篇论文和多项研究相关联
然而,这将论文和研究分组。
以下是它的外观:
我想到的另一种选择是,由于论文和研究都只是将样本分组在一起,我可以将它们合并为一个,并将该组中的FK分配到各自的论文/研究表中。
以下是它的外观:
我想知道设计是否合理以及两种不同设计之间是否有任何权衡?还有替代方案来建模关系吗?
答案 0 :(得分:1)
我认为第一个设计是正确的。有两种M:M关系,纸张 - 样本和研究 - 样本。它们因域逻辑而不同,因此将它们组合在一个关系中并为此目的引入额外的实体是没有意义的。第一个模式是一个很好的规范化模式。你的目标是什么?你试图解决什么问题?
架构没有明确的分组......
好的,如果你确实要求Group作为一个单独的实体,你的设计可能如下所示:
问题是,集团实体薄弱。除了ID之外,很难向该实体提出任何属性。使用这个方案思想并不方便。当用户编辑纸张组时,您必须选择如何处理这种情况。是否应该所有其他论文\研究'看'此更改,或者您必须创建\搜索已编辑的组并将其分配给纸张。如果没有与组相关的其他业务逻辑,我认为这是错误的方法。通常,当弱实体出现在设计中时,这意味着未正确选择一组抽象。目前,我还没有看到如何证明集团实体的合理性。