我还不能完全理解这些差异。你能描述这两个概念并使用真实世界的例子吗?


当前回答

标识关系指定子对象不能不存在父对象

非标识关系指定常规关联在对象之间,1:1或1:n基数。

如果父级不是,则可以将非标识关系指定为可选关系通过设置父表基数。。。

其他回答

标识关系指定子对象不能不存在父对象

非标识关系指定常规关联在对象之间,1:1或1:n基数。

如果父级不是,则可以将非标识关系指定为可选关系通过设置父表基数。。。

从父级迁移到子级的属性是否有助于识别子级?

如果是:标识依赖性存在,则关系是标识的,子实体是“弱”的。如果不存在:标识依赖不存在,则关系是非标识的,子实体“强”。

注意,身份依赖意味着存在依赖,但并非相反。每一个非NULL FK都意味着没有父级就不能存在子级,但这并不能使关系确定。

有关这方面的更多信息(以及一些示例),请参阅ERwin方法指南的“确定关系”部分。

补充:我意识到我参加聚会(非常)晚了,但我觉得其他答案要么不完全准确(用存在依赖而不是身份依赖来定义它),要么有些曲折。希望这个答案更清晰。。。


1孩子的FK是孩子的PRIMARY KEY或(非NULL)UNIQUE约束的一部分。

对Daniel Dinnyes回答的补充:

在非标识关系中,不能使用相同的值两次使用相同的主键列(例如,“ID”)。

但是,使用identifynig关系,可以为“ID”列显示两次相同的值,只要它具有不同的“otherColumn_ID”外键值,因为主键是两列的组合。

请注意,FK是否为“非空”并不重要!;-)

识别关系意味着子实体完全依赖于父实体的存在。

示例帐户表人员表和人员帐户。人员帐户表仅通过帐户和人员表的存在来标识。

非标识关系意味着父表的存在不标识子表。

示例accountType和account.accountType表未标识为存在科目表。

正如下面的链接中很好地解释的,识别关系有点像ER概念模型中的父实体的弱实体类型关系。用于数据建模的UML风格CAD不使用ER符号或概念,并且关系类型为:识别、非识别和非特定。

识别关系是父/子关系,其中子实体是一种弱实体(即使在传统的ER模型中称为识别关系),其自身属性没有真正的主键,因此无法通过自身属性唯一识别。在物理模型上,对子表的每一次访问都将依赖于(包括语义上的)父级主键,该主键会变成子级主键的一部分或全部(也是外键),通常会在子级生成一个复合键。子项本身的最终现有键仅是伪键或部分键,不足以识别该类型实体或实体集的任何实例,而不需要父项的PK。

非标识关系是完全独立的实体集的普通关系(部分或全部),其实例不依赖于彼此的主键来唯一标识,尽管它们可能需要外键用于部分或全部关系,但不作为子实体的主键。孩子有自己的主键。父幂等。两者都是独立的。根据关系的基数,其中一个的PK作为FK传递到另一个(N侧),如果是部分,则可以为空,如果是总计,则必须不为空。但是,在这样的关系中,FK永远也不会是孩子的PK,就像在确定关系时一样。

http://docwiki.embarcadero.com/ERStudioDA/XE7/en/Creating_and_Editing_Relationships