无法理解识别关系的主要思想:
标识关系是子表中的行是否存在依赖于父表中的行的情况。这可能会让人感到困惑,因为现在的常见做法是为子表创建一个伪键,而不是将外键设置为子表的主键的父键部分。从形式上讲,这样做的“正确”方法是使外键成为孩子的主键的一部分。但逻辑关系是子代不能离开父代而存在。
例如:一个人有一个或多个电话号码。如果他们只有一个电话号码,我们可以简单地将其存储在Person列中。由于我们希望支持多个电话号码,因此我们创建了第二个表PhoneNumbers,其主键包括引用Person表的person_id。
但是,如果person_id是主键,那么人怎么可能有多个电话号码呢?或者可能的person_id必须是复杂主键的一部分,并且不能单独标识表中的项?
发布于 2012-03-17 22:14:06
或可能的person_id必须是复杂主键…的一部分?
一点儿没错。在您引用的示例中,PhoneNumbers的主键可能类似于(person_id, number)。这意味着没有两个记录PhoneNumbers可以具有相同的person_id和number;它们可以具有相同的person_id,它们可以具有相同的number,但不能同时具有这两个记录。(换句话说,person_id和number一起“唯一地标识”PhoneNumbers中的一条记录。)
https://stackoverflow.com/questions/9750514
复制相似问题