目录
第一范式
第二范式
定义:满足第⼀范式的基础上,不存在非关键字段对任意候选键的部分函数依赖。存在于表中定义了复合主键的情况下。
解释:
非关键字段:不是候选键的字段
函数依赖:如果知道了一个(或一组)字段 X 的值,就能唯一确定另一个字段 Y 的值,那么我们就说 Y 函数依赖于 X
通俗的讲,就是不存在表中的部分关键字段就能确定一部分非关键字段的情况。
反例例如
若姓名和选课作为联合主键,仅通过选课就能确定学分,这就不符合第二范式
应该拆成两个表,一个包含姓名和选课,一个包含选课和学分
不满足第二范式可能出现的问题
1.数据冗余
2.更新异常:如果要调整学分,那么就需要更新表中所有关于MySQL的记录,⼀旦执行中断导致某些记录更新成功,某些数据更新失败,就会造成表中同一门课程出现不同学分的情况,出现数据不⼀致问题。
3.插入异常:目前这样的设计,成绩与每一门课和学⽣都有对应关系,当有一门新课还没有学⽣参加考试取得成绩之前,那么这门新课在数据库中是不存在的。
4.删除异常:毕业时删除毕业生会导致相应课程的学分也没有记录
第三范式
定义:在满足第二范式的基础上,不存在非关键字段,对任⼀候选键的传递依赖。
反例例如:

表中通过候选键姓名可以确定他们的学校,通过学校可以确定地址和电话,这就是传递依赖
应该将其拆成两张表

第一张表主键是姓名,第二张表主键是学校,就可以消除传递依赖。


被折叠的 条评论
为什么被折叠?



