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


当前回答

比尔的回答是正确的,但令人震惊的是,在所有其他答案中,没有人指出最重要的方面。

人们一再强调,在一种确定的关系中,没有父母,孩子是不可能存在的。(例如用户287724)。这是真的,但完全没有抓住重点。外键为非空就足够了。它不需要是主键的一部分。

因此,真正的原因是:

识别关系的目的是,外键永远不会更改,因为它是主键的一部分。。。因此识别!!!

其他回答

比尔的回答是正确的,但令人震惊的是,在所有其他答案中,没有人指出最重要的方面。

人们一再强调,在一种确定的关系中,没有父母,孩子是不可能存在的。(例如用户287724)。这是真的,但完全没有抓住重点。外键为非空就足够了。它不需要是主键的一部分。

因此,真正的原因是:

识别关系的目的是,外键永远不会更改,因为它是主键的一部分。。。因此识别!!!

非识别关系

非识别关系意味着孩子与父母有亲属关系,但可以单独识别。

PERSON    ACCOUNT
======    =======
pk(id)    pk(id)
name      fk(person_id)
          balance

ACCOUNT和PERSON之间的关系无法识别。

确定关系

认同关系意味着需要父母给予孩子身份。孩子只因父母而存在。

这意味着外键也是主键。

ITEM      LANGUAGE    ITEM_LANG
====      ========    =========
pk(id)    pk(id)      pk(fk(item_id))
name      name        pk(fk(lang_id))
                      name

ITEM_LANG和ITEM之间的关系正在识别。以及ITEM_LANG和LANGUAGE之间的关系。

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

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

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

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

现实世界还有另一种解释:

一本书属于所有者,所有者可以拥有多本书。但是,这本书也可以在没有所有者的情况下存在,它的所有权可以从一个所有者变为另一个所有者。书籍和所有者之间的关系是一种不可识别的关系。

然而,一本书是由一位作者写的,而且作者可能已经写了多本书。但是,这本书需要作者来写——没有作者,它就不可能存在。因此,这本书与作者之间的关系是一种认同关系。

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

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

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