数据库三范式简述及例子

1NF

关系中的每个属性不可再分。

比如这张表有这些属性:

id姓名年级疫情打卡
时间次数连续次数

因上面签到可再分,不满足第一范式,可优化成:

id姓名年级打卡时间打卡次数打卡连续次数

该表满足1NF。

1NF问题

数据冗余、增删改异常。

eg:

id姓名院系辅导员课程课程分数
2017210575小明软件工程老王高数70
2017210575小明软件工程老王英语71
2017210576小红通信工程老张高数80
2017210576小红通信工程老张英语81
  1. 该表其实只改了课程和课程分数,id 姓名 院系 辅导员 数据冗余
  2. 若学生(比如小明)毕业,删数据有问题,可能变成此表,主键不为空就报错删不了
id姓名院系辅导员课程课程分数
软件工程老王
软件工程老王
2017210576小红通信工程老张高数80
2017210576小红通信工程老张英语81
  1. 若增数据(比如增加院系),院系没人(主键为空),增加时会报错。

  2. 若改数据(比如转系),要改好几个数据。

2NF

1NF基础上消除非主属性对码的部分函数依赖。

eg:

学生表:

sid姓名院系辅导员

课程表:

cid课程名课程分数

解决

相对1NF,解决了数据冗余、更改异常

2NF问题

学生表

​ 插入院系,主键还是空的

id姓名院系辅导员课程课程分数
搬砖系

​ 删除这个系(搬砖系只有1人),院系依赖那个人,所以这个院系就没了。

id姓名院系辅导员课程课程分数
2017211444小刚搬砖系老刚搬砖90

3NF

2NF基础上消除非主属性对码的传递函数依赖。

eg:

学生表:

学生id姓名院系

院系表:

院系系主任

课程表:

学生id课程名课程分数

解决

相对于2NF,解决了插入、删除(变成空表)

说明

名称解释eg
一个表中,可以唯一决定一 个元组的属性“集合”。id-----姓名,系名,辅导员
课----分数
(id,课名)这个属性组就叫做码。
函数依赖在数据表中,在属性X确定的情况下,必定能确定Y的值,那就说明Y函数依赖于X,写作X→Y。学号----系名
学号----系主任
(学号,课名)—成绩
完全函数依赖在一张表中,若X→Y,且对于X的任何一个真子集(假如属性组X包含超过一个属性的话), X’→Y不成立,那么我们称Y对于X完全函数依赖,记作XF→Y。(学号,课名)—成绩
成绩依赖学号和课名
部分函数依赖如果Y函数依赖于X,但是Y不完全函数依赖于X,那就叫做部分函数依赖。(学号,课名)—姓名
姓名依赖于学号,不依赖课名
传递函数依赖如果Y依赖于X,Z又依赖于Y,那就说Z依赖于X。∵学号—院系
院系—系主任
∴学号—院系,系主任
系名依赖于学号,系主任依赖于系名,那么系主任传递函数依赖于学号。不满足3NF
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值