问:候选键是什么?
答:候选键——在一个关系(表)中,能够唯一标识一条记录的属性或属性组。也就说,通过候选键的值,我们可以准确地找到关系中的某一行数据。
问:候选键有什么特点?
答:候选键具有唯一性,关系中不可能存在两个记录(元组)有相同的候选键值。
问:如果我的候选键由两个或多个属性组成(a,b,c),删掉一个,剩下的还算候选键吗?
答:不算,候选键中的每一个属性都对唯一标识记录起着关键性的作用。如果你移除了一个属性发现还可以找到唯一标识记录,说明原来的并不是候选键。
问:主键和候选码有什么关系?
答:在一个关系中只能对应一个主键,主键则是从候选码中挑选。若有多个候选码,也可多个候选码合成一个主键(根据实际情况合,不能想当然,在某些情况下,可能需要组合多个属性来确保唯一性,这样才可以合)。
如有A、B、C三个候选码,主码可以是(A)(B)(C)(A,B)(AC)(B,C)
(A,B,C)
例子:
假设我们有一个名为“员工”的表,包含以下属性:员工号、姓名、身份证号、部门号。在这个表中,有可能存在多个员工具有相同的姓名或部门号,但每个员工的员工号和身份证号都是唯一的。
- (员工号)是一个候选键,因为它能够唯一地标识每一条员工记录。
- (身份证号)也是一个候选键,因为它同样具有唯一性。
- (姓名,部门号)则不是一个候选键,因为即使姓名和部门号组合在一起,也可能存在多条记录具有相同的组合值。
如果我们尝试从(员工号)这个候选键中移除“员工号”这个属性,那么我们就失去了唯一标识员工的能力,因为不再有任何属性能够单独地标识一条记录。因此,(员工号)是一个最小的候选键,因为它包含了实现唯一性所需的最少属性。
同样地,(身份证号)也是一个最小的候选键,因为仅仅通过身份证号这一个属性,我们就能唯一地标识一条员工记录。