假设在 ER 模型中,强实体和弱实体之间存在一种识别关系,并且两个实体都完全参与,那么需要多少个最小表来表示这种关系,如果: 情况 1:映射是一对一 (1:1)。 情况 2:映射是多对一 (N : 1) 或一对多 (1 : N)。 情况 3:映射是多对多 (N : M)。
如果没有完全参与,我知道答案是什么,但我不知道发生完全参与时的情况。我也在某处读到,如果两个实体都存在总参与约束,并且上述情况的映射是多对多,那么您只需要一张表。真的吗?其他映射呢?我需要更多的洞察力。
我不知道[两个实体]完全参与时的情况
关系双方的完全参与只是不可能实现,最终由于数据库事务必须是ACID的限制,所以,特别是不可能同时在不同的表中插入记录:这就是满足这种关系所需要的。
要理解这个问题,请考虑概念和具体 ER 模型之间的区别。 -- 技术文献不仅仅区分两个层次,实际上通常呈现三个层次,分别对应概念分析(需求)、抽象设计(抽象规范)和具体规范(实现):但只是两个层次,我是这样的简单地称为“概念”与“具体”,我认为足以理解相关区别。
在概念层面,特别注意关系不有任何内在方向(ERD 表示的图是无向),这里的关系是双向仅与某些属性(基数和可选性)连接ERD术语)在每一侧(在每一端):确实,任何一种关系都有一个且唯一的(通常是口头的)名称,而且它是一种非正式的阅读,通常在一个方向上以主动模式和被动模式进行另一种是模式,但抽象地来说,两个实体之间存在简单的 a 关系。 在具体层面,在 ACID 要求中添加这样一个事实:为了实现关系,我们必须在一个表中定义 FK,而不是在另一个表中。我们得到的必然是具体关系中的不对称,以至于我们可以使用
parent和child实体的非正式概念,其中后者是定义FK的地方。特别是,该图变成了有向。 现在,因为
没有办法摆脱这个“限制”;并且出于“逻辑”考虑(我们可以认为,我们领域中唯一有效的逻辑是“可计算”逻辑,自概念分析以来就采用,因为“可计算”“必须”是业务流程和规则本身):我个人宁愿建议在概念层面上考虑“定向关系”(即禁止双方强制的关系,即完全参与):只是没有(ACID)可计算逻辑附加到这些关系上。 ! -- 无论如何,在这方面,里程可能会有所不同。