超级密钥与候选密钥
- 候选键=最小键标识行
- Super键=至少一样宽候选键
对于我来说,超级密钥通常会在候选密钥上引入歧义
候选键是一个最小的超级键。所以一个超级密钥不是严格的“更宽”,因为候选密钥也是超级密钥。 – sqlvogel 2010-06-21 19:41:48
@david:不是“最小的超级键”吗? – gbn 2010-06-22 04:40:49
“通常引入歧义” - 你是什么意思?例如,在这个答案中(http://*.com/questions/3938736/enforce-constraints-between-tables/3940708#3940708),EmployeeDepartments表有一个候选键'(employee_ID)'和一个超级键'(employee_department_name, EMPLOYEE_ID)'。两者都是数据完整性所必需的,哪里存在歧义? – onedaywhen 2010-10-26 14:18:03
超级密钥是一组列,唯一标识ifies连续。候选键将是唯一标识一行的MINIMAL列集合。所以基本上Superkey是一个候选关键字,其中包含多余的不必要的列。
“一个超级键是一个候选键与额外的不必要的列” - - 额外的列可能实际上有必要引用表并确保数据的完整性,例如'(employee_ID)'是唯一的,但是对于根据部门限制雇员的某些表可能需要'(employee_ID,department_name)'上的键。 – onedaywhen 2010-10-26 14:11:51
让我们保持它的简单
超密钥 - 一组键的唯一定义一个row
。所以出所有属性的,如果连任何单独一个是unique
那么所有具有独特的属性属于子集根据superkey
。
候选键 - 一个superkey
哪些没有进一步的子集可以导出可识别rows uniquely
,或者我们可以简单地说,它是minimal superkey
的。
超级键和候选键是关系数据库模型术语。 “ERDB”是什么意思?也许你指的是实体关系(ER)模型,它是一组绘制关于数据图片的约定。 ER模型与关系模型不同。 – sqlvogel 2010-06-21 19:38:19