DBMS 中的键2025年4月21日 | 阅读 8 分钟 引言关系数据库概念的一个关键特性是,关系中不应该有元组重复,以便每个元组都能在关系中被唯一地标识。可以通过简单地列出所有属性值来避免元组重复,但现在的问题是,我们是否需要所有属性来区分。如果我们使用所有属性,那么在引用这些属性以唯一标识特定元组时会浪费大量时间。 能够唯一标识关系元组且无法进一步简化的最小属性集称为键属性或简称为键。 ![]() 什么是键?
例如:在 Student 表中,ID 被用作键,因为每个学生都有唯一的 ID。在 PERSON 表中,passport_number、license_number、SSN 是键,因为它们对每个人都是唯一的。 ![]() 在 DBMS 中,为什么需要键?为了定义数据库中不同类型的完整性约束,我们使用键。相反,表是不同关系的不同出现记录的集合。这些文档可能数以千计,其中一些甚至可能是重复的。 因此,我们需要一种方法来独立且唯一地识别这些条目——也就是说,在不产生重复的情况下。键有助于消除这种不便。 键的类型![]() 1. 主键
![]() 主键的目标
2. 候选键
例如:在 EMPLOYEE 表中,id 最适合作为主键。其余属性,如 SSN、Passport_Number、License_Number 等,都被视为候选键。 ![]() 候选键的目标
3. 超键超键是能够唯一标识元组的属性集。超键是候选键的超集。 ![]() 例如:在上面的 EMPLOYEE 表中,对于(EMPLOEE_ID, EMPLOYEE_NAME),两个员工的名字可能相同,但他们的 EMPLYEE_ID 不能相同。因此,此组合也可以是键。 超键将是 EMPLOYEE-ID(EMPLOYEE_ID, EMPLOYEE-NAME)等。 超键的目标
4. 外键
例如:考虑 Employee 关系和 Department 关系。
![]() 外键的目标
5. 备用键可能有一个或多个属性或属性的组合可以唯一标识关系中的每个元组。这些属性或属性组合称为候选键。从这些候选键中选择一个作为主键,而剩余的候选键(如果存在)称为备用键。换句话说,备用键的总数是候选键的总数减去主键。备用键可能存在,也可能不存在。如果关系中只有一个候选键,则没有备用键。 例如,employee 关系有两个属性,Employee_Id 和 PAN_No,它们充当候选键。在此关系中,Employee_Id 被选为主键,因此另一个候选键 PAN_No 充当备用键。 ![]() 备用键的目标是
6. 复合键当主键由多个属性组成时,它被称为复合键。此键也称为连接键。 ![]() 例如,在 employee 关系中,我们假设一个员工可以被分配多个角色,并且一个员工可以同时处理多个项目。因此,主键将由所有三个属性 Emp_ID、Emp_role 和 Proj_ID 组合而成。因此,这些属性充当复合键,因为主键包含一个以上的属性。 备用键的目标是
7. 人工键使用任意分配的数据创建的键称为人工键。当主键很大且复杂,并且与许多其他关系没有关系时,就会创建这些键。人工键的数据值通常按顺序编号。 ![]() 例如,employee 关系中的主键 Emp_ID、Emp_role 和 Proj_ID 很大。因此,最好添加一个新的虚拟属性来唯一标识关系中的每个元组。 DBMS 键选择题1. 在何种情况下,超键的子集是候选键?
答案:C 解释:两个集合不能互为子集。超键中的一个不是整个超集的集合称为候选键。 2. 主键的例子是-
答案:d 解释:emp_id 是唯一的,所以它是主键。 3. 以下哪个不是主键-
答案:b 解释:address 不唯一,所以它不是主键。 4. 哪个键是另一个表的主键?
答案:a 解释:外键必须是另一个键的主键。 5. 以下哪一项描述了用于唯一标识记录的一个或多个特征的集合?
答案:a 解释:关系中每个键的超集称为超键。 下一主题DBMS 泛化 |
我们请求您订阅我们的新闻通讯以获取最新更新。