我已经阅读了与全员参与的关系以及识别关系的情况,即一个实体在没有另一个实体的情况下不存在。
我也读过,'并非所有参与都意味着识别关系'。
他们之间有什么区别?
答案 0 :(得分:1)
您对定义的尝试过于模糊,无法发挥作用。
当然,任何实体必须存在才能参与关系,并且必须存在与其参与的实体。不要将此与需要其他实体类型的实体类型混淆。
当第一类型的每个实体必须参与时,第一实体类型完全参与与第二实体的关系。一种类型的总参与度可以是1:1,很多:1或多:很多。删除关系或其整体可能会给出以前完全参与的实体仍然存在的设计,可能参与其他关系。
区别关系是第一/子实体类型和第二/父实体类型之间的关系,其主键包含在第一/子的主键中。结果是儿童实体完全参与识别关系。儿童类型的总参与率为1:1或多:1。删除整体或关系需要删除子实体类型以及它参与的任何其他关系。
如果我们不改变主键和&之间的对应关系。然后,只要子实体存在,它就与同一父实体相关联。只要完全参与类型的每个实体至少参与一次,一些非识别关系就会有关联来来去去。
ER建模相当随意。任何识别关系&它的子实体类型可以设置为总共很多:1非参与关系。但是这种设计不会明确父类型上子类型的存在依赖性。
答案 1 :(得分:1)
如果您从参与的角度来看待关系,那么存在参与约束,该约束指定实体类型(例如A)的存在是否依赖于它通过关系与另一个实体类型(比如说B)相关类型。
此约束指定每个实体可以参与的最小关系实例数,有时称为最小基数约束。有两种类型的参与约束 - 总计和部分。
着名的员工示例: " 每个 员工必须为部门工作。"
即:员工实体只有在参与至少一个WORKS_FOR关系实例时才能存在。
因此,EMPLOYEE在WORKS_FOR中的参与被称为完全参与(又名存在依赖),这意味着整个集合中的每个实体员工实体必须通过WORKS_FOR
与 a 部门实体相关联现在,在上面的例子之后,部分关系是自我解释的。
为了识别关系,我们首先需要熟悉弱实体类型:
调用不具有自己的键属性的实体类型 弱实体类型。
因此,这些通过与来自另一实体类型的特定实体相关联并与其属性值之一相关联来识别。
我们将此其他实体类型称为标识(或所有者)实体类型,并调用与弱实体类型相关的关系类型向其所有者提供弱实体类型的识别关系。
弱实体类型始终具有总参与约束(存在 依赖)关于其识别关系,因为没有所有者实体就无法识别弱实体。
但是,并非每个存在依赖性都会导致弱实体类型。如上例所示,EMPLOYEE实体类型不能存在,除非它与DEPARTMENT实体类型相关,即使它有自己的密钥(Employee_ID),因此也不是弱实体。
因此,对于识别关系,弱势实体是必须的(因此具有隐含的全部参与),但是完全参与并不意味着识别关系,因为它可能没有上述示例中描述的弱实体。
希望它有所帮助,如果你有任何论据随时发表评论。
所有参考文献:
数据库系统基础(第6版)
Ramez Elmasri,Shamkant B. Navathe [ISBN 13:978-0-136-08620-8]