数据库系统第六章【关系数据理论】(B站视频)
数据库系统第六章【关系数据理论】(B站视频)
B站视频链接
https://www.bilibili.com/video/BV13J411J7Vu
一、前言
二、规范化
函数依赖
三种分类
需要共同满足的条件
如何确定函数依赖?
平凡函数依赖vs非平凡函数依赖
完全函数依赖vs部分函数依赖
完全函数依赖
表达一种无冗余的依赖关系,设U{A1,A2,…,An}是属性集合,R(U)为某关系表,x,y是U上的子集,x'是x的任意真子集,若有x->y成立且x'->y总不成立,则称y完全函数依赖于x。显然,此时x中无任何多余属性。
部分函数依赖
表达一种冗余的依赖关系,设U{A1,A2,…,An}是属性集合,R(U)为某关系表,x,y是U上的子集,x'是x的真子集,若有x->y且x'->y,则称y部分函数依赖于x。记做x->py,显然,此时x中存在多余属性,例如,设x(学生编号,学生性别),x'(学生编号),y(学生姓名),则有x决定y,x'决定y,此时y部分函数依赖于x。
传递函数依赖
码
码是一个或多个属性的集合。
码就是能唯一标识实体的属性,他是整个实体集的性质,而不是单个实体的性质。它包括超码,候选码,主码。
超码
性质:如果K是超码,那么所有包含K的集合也是超码。
性质:候选码是最小超码,它们的任意真子集都不能成为超码。
候选码:多个集合,一个候选码是一个集合,其中的一个元素称为主属性
主属性和非主属性
外码
范式
逐渐严格
1NF
每一列都是不可划分的(原子性),不能表中有表
例子中的属性说明:Sno:学号;Cno:课程编号;Sdept:系名;Sloc:学生住处
2NF
目的:解决部分函数依赖
数据库表中不存在非关键字段对任一候选关键字段的部分函数依赖
简单描述:一个表只描述一件事情
完全依赖概念:即非主属性不能依赖于主键的部分属性,必须依赖于主键的所有属性。
3NF
目的:解决传递函数依赖
第三范式就是不存在非主属性对候选关键字的传递函数依赖
简单描述:要求一个数据库表中不包含已在其它表中已包含的非主关键字信息
BCNF(BC范式)
修正的第三范式
不存在主属性对任一候选关键字段的部分函数依赖