2012-03-17 170 views
0

无法识别已了解的关系主要思想:识别和非识别关系

一个识别关系是当一个子表行的存在依赖于父表中的一行。这可能会引起混淆,因为现在很普遍的做法是为子表创建伪密码,但不要将子键的外键设置为子键的父键。从形式上来说,这样做的“正确”方式是将孩子的主键作为外键。但逻辑关系是,孩子没有父母就不能生存。

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

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

回答

2

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

没错。在您引用的示例中,PhoneNumbers的主键可能与(person_id, number)类似。这意味着没有两个记录PhoneNumbers可能具有相同的person_idnumber;它们可以具有相同的person_id,并且它们可以具有相同的number,但不能同时存在。 (换句话说,person_idnumber合起来就是“唯一标识”PhoneNumbers中的记录。)

+0

这就是我们所说的复合关键ruakh吗? – Junaid 2012-06-05 11:16:45

+0

@Junaid:是的,确切的。 – ruakh 2012-06-05 14:10:14

+0

嗯,谢谢它清除了我的很多混乱:) – Junaid 2012-06-05 14:39:14