数据库基础知识 - 范式

# 范式
设计关系数据库时,需要满足不同的规范,这些规范称为范式。范式的目的是为了消除数据冗余以及操作异常,使数据库结构清晰、简洁明了。

# 候选码
候选码是一个或多个属性,它能够完全决定整个属性组。

# 主码
如果一个属性组有多个候选码,可从中选取一个做为主码。

# 主属性
包含在任何一个候选码中的属性,称为主属性。

# 非主属性
不包含在任何一个候选码中的属性称为非主属性。

# 多值依赖
假设X, Y, Z是U的子集,并且 Z=U - X - Y。如果在X上取特定值,在Y上存在多个值且这些值与Z无关,则称Y多值依赖于X,记为 X →→ Y。
若 X→→Y, 且Z为空集,则称 X→→Y 为平凡的多值依赖;
若 Z 不为空,则称 X→→Y 为非平凡的多值依赖;

# 函数依赖和多值依赖
函数依赖是多值依赖的特殊情况;
函数依赖是唯一确定的关系,例如课程号唯一确定课程名称;
多值依赖却不能唯一确定,例如教师号可能多值依赖于课程号,因为多个老师可以上同一门课;

# 第一范式(1NF)
1NF是指数据库表中的每一列都是不可分割的原子数据项,简而言之就是不能表中有表。

# 第二范式(2NF)
2NF是指在1NF的基础上,消除非主属性对码的部分依赖(非主属性必须完全依赖于码)。
例如:(学号, 课程号, 分数, 姓名)就不是2NF,因为姓名只是部分依赖于(学号,课程号)。
# (学号, 课程号)是码

# 第三范式(3NF)
3NF是指在2NF的基础上,消除非主属性对码的传递依赖(非主属性不能依赖于其他非主属性)。
例如:(学号, 姓名, 学院编号, 学院名称)就不是3NF,因为有学号 -> 学院编号 -> 学院名称。
# (学号)是码

# BCNF
BCNF是指在3NF的基础上,要求每一个决定属性因素都必须包含码(主属性不能部分依赖于其它不包含它的码)。
例如:(学号, 教师号, 课程号)就不是BCNF,因为有教师号 -> 课程号,但教师号不是码。
# (学号, 教师号)和(学号, 课程号)都是码

# 第四范式(4NF)
4NF是指在3NF的基础上,消除非平凡且非函数依赖的多值依赖(每个非平凡多值依赖X→→Y(Y不属于X),X都含有码)。
例如:(课程名, 教师名, 参考书名)就不是4NF,因为 课程名 →→ 教师名,而课程名不是码。
# (课程名, 教师名, 参考书名)是码

# 第五范式(5NF)(极少用到,这里不做介绍了)
5NF是指在4NF的基础上,消除不是由候选码所蕴含的连接依赖。

# 规范化的步骤


# url
http://idc.hust.edu.cn/~rxli/teaching/dbs/
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值