数据库关系理论
关系数据理论,也被称为关系数据库理论。是数据库领域的重要基础理论,主要用于设计和优化关系型数据库,确保数据库中数据的完整性、一致性和减少数据冗余。
1、函数依赖
- 定义:设 是一个属性集 上的关系模式, 和 是 的子集。若对于 的任意一个可能的关系 , 中不可能存在两个元组在 上的属性值相等, 而在 上的属性值不等, 则称 “ 函数确定 ” 或 “ 函数依赖于 ”,记作 。
- 示例:在学生信息表(学号,姓名,班级)中,学号可以唯一确定姓名和班级,即存在函数依赖:学号 → 姓名,学号 → 班级。
2、范式
范式是符合某一种级别的关系模式的集合,是衡量关系模式好坏的标准。满足不同程度要求的为不同范式,从低到高主要有第一范式(1NF)、第二范式(2NF)、第三范式(3NF)、巴斯 - 科德范式(BCNF)等。
- 第一范式(1NF)
- 定义:如果一个关系模式 的所有属性都是不可分的基本数据项,则 。
- 示例:若一个学生选课表中,“课程” 属性包含多门课程,且未分开存储,就不满足 1NF;将 “课程” 拆分为多个单独的课程记录,使每个属性都是不可再分的,就满足了 1NF。
- 第二范式(2NF)
- 定义:若关系模式 ,并且每一个非主属性都完全函数依赖于任何一个候选码,则 。
- 示例:在订单表(订单号,产品编号,产品名称,数量)中,候选码是(订单号,产品编号),若产品名称只依赖于产品编号,而不依赖于整个候选码,那么该表不满足 2NF;将订单表拆分为订单表(订单号,产品编号,数量)和产品表(产品编号,产品名称),就满足了 2NF。
- 第三范式(3NF)
- 定义:设关系模式 ,若 中不存在这样的码 、属性组 及非主属性 (), 使得 , 成立,,则称 。即每一个非主属性既不部分依赖于码也不传递依赖于码。
- 示例:在员工信息表(员工编号,部门编号,部门名称)中,员工编号 → 部门编号,部门编号 → 部门名称,存在传递依赖,不满足 3NF;将其拆分为员工表(员工编号,部门编号)和部门表(部门编号,部门名称),就满足了 3NF。
- 巴斯 - 科德范式(BCNF)
- 定义:设关系模式 ,若 且 时 必含有码,则 。也就是说,每一个决定因素都包含码。
- 示例:在关系模式(仓库名,管理员,物品名,数量)中,若存在函数依赖(仓库名,物品名)→ 数量,(仓库名,管理员)→ 物品名,管理员 → 仓库名,该关系模式不满足 BCNF;进行适当的分解后可满足 BCNF。