【发布时间】:2011-03-06 11:37:23
【问题描述】:
ERDB 中的 Super 和 Candidate 键有什么区别?
【问题讨论】:
-
Superkey 和 Candidate Key 是关系数据库模型术语。 “ERDB”是什么意思?也许您指的是实体关系 (ER) 模型,它是一组用于绘制有关数据的图片的约定。 ER 模型与关系模型有所不同。
标签: sql database database-design ddl
ERDB 中的 Super 和 Candidate 键有什么区别?
【问题讨论】:
标签: sql database database-design ddl
超级键是一组唯一标识行的列。候选键将是唯一标识行的最小列集。所以本质上,超级键是一个候选键,其中包含额外的不必要的列。
【讨论】:
(employee_ID) 是唯一的,但对于根据部门限制员工的某些表,可能需要 (employee_ID, department_name) 上的键。
候选键是一个最小超级键
【讨论】:
对我来说,超级键通常会在候选键上引入歧义
【讨论】:
(employee_ID) 和一个超键 (employee_department_name, employee_ID)。两者都是数据完整性所必需的,歧义在哪里?
让我们保持简单
SuperKey - 一组唯一定义 row 的键。所以在所有属性中,如果任何一个是 unique,那么所有具有该唯一属性的子集都属于 @ 987654323@.
候选键 - 一个superkey,无法从中派生出可以识别rows uniquely的进一步子集,或者我们可以简单地说它是minimal superkey。
【讨论】:
简而言之:CANDIDATE KEY 是最小的 SUPER KEY。
其中 Super key 是列(或属性)的组合,用于唯一标识 RDBMS 中关系(表)中的任何记录(或元组)。
例如,考虑具有 A、B、C 和 D 列的表中的以下依赖项 (给出这个表只是为了一个简单的例子,所以没有涵盖 R 可能具有的所有依赖项)。
属性集(行列式)---可以识别--->(从属)
A-----> 广告
B-----> ABCD
C-----> 光盘
AC----->ACD
AB----->ABCD
ABC----->ABCD
BCD----->ABCD
现在,B、AB、ABC、BCD 标识所有列,因此这四个列符合超级键的条件。
但是,B⊂AB; B⊂ABC; B⊂BCD 因此 AB、ABC 和 BCD 不符合候选键的资格,因为它们的子集可以识别关系,因此它们不是最小的,因此只有 B 是候选键,而不是其他键。
【讨论】: