识别和识别关系

时间:2012-03-17 13:55:23

标签: java sql mysql-workbench

无法理解识别关系的主要观点:

标识关系是指子表中存在的行取决于父表中的行。这可能会令人困惑,因为现在通常的做法是为子表创建伪代码,但不要将外键设置为子代主键的父部分。在形式上,这样做的“正确”方法是使外键成为孩子主键的一部分。但逻辑关系是没有父母就不能存在孩子。

示例:一个人有一个或多个电话号码。如果他们只有一个电话号码,我们可以简单地将其存储在Person列中。由于我们想要支持多个电话号码,我们制作第二个表PhoneNumbers,其主键包括引用Person表的person_id。

但是,如果person_id是主键,那么例如Person可以有多个电话号码?或者,person_id必须是复杂主键的一部分,并且不能单独识别表中的项目?

1 个答案:

答案 0 :(得分:2)

  

或者person_id必须是复杂主键的一部分[...]?

完全。在您引用的示例中,PhoneNumbers的主键可能类似于(person_id, number)。这意味着没有两个记录PhoneNumbers可以具有相同的person_id number;它们可以具有相同的person_id,并且它们可以具有相同的number,但不能同时具有两个person_id。 (换句话说,numberPhoneNumbers合在一起,“唯一地标识”{{1}}中的记录。)