在RM中表示多个候选键

时间:2015-08-12 18:00:01

标签: candidate-key relational-model er-diagram

我在理解为什么从ER图到ERM的以下映射正确,或者更精确地完成时遇到问题。在给定的例子中,我们在项目,地点和人之间存在三元1:1:N关系。

Example of an ER-diagram of a ternary relationship

每个实体都有一个主键(ProjectID,PlaceID,PersonID)。如果我理解这个图表是正确的,那么一个人和一个项目的组合就无法与多个地方相关联。此外,人和地方的组合只能与一个项目相关联。此外,特定地点的项目可以有多个人。

这种对如何阅读三元关系的理解导致了我的问题。我将ERM映射到以下RM:

Project(ProjectID)
Place(PlaceID)
Person(PersonID)
Works(ProjectID, PersonID, PlaceID)

我现在在表 Works 中有两个候选键:( Place,PersonID)和(ProjectID,PersonID)。让我们选择第一个作为主键。我应该有一个正确的RM(文献告诉我),但我没有得到的是如何确保人和项目的相同组合与不同的地方无关?我不是必须说某个地方(ProjectID,PersonID)也是候选键或者这不是RM表示法的一部分吗?

ProjectID   PersonID   PlaceID
1           Marvin     New York
1           Tom        Paris
1           Marvin     Tokyo

1 个答案:

答案 0 :(得分:1)

  

个人和项目的组合无法与多个地方相关联。此外,一个人和一个地方的组合只能与一个项目相关联。

仔细阅读本文,您可以进一步说明每个人必须与一个项目和一个地方完全相关。由于这些是关系中唯一的其他实体,因此您可以安全地将Person(更具体地说是PersonID)作为此关系的主键。

(Place,PersonID)和(ProjectID,PersonID)都是关系的有效(非主要)键。您错误地认为您提供的示例条目是正确的。查看您的关系,每个personID和每个(Place,PersonID)或(ProjectID,PersonID)对的扩展名应该只在表中出现一次。因此,示例表与给定ER图的规则不匹配。