三范式
数据库设计三范式
1.第一范式(1NF)
所谓第一范式(1NF)是指数据库表的每一列都是不可分割的基本数据项,同一列中不能有多个值。
类似 字段名称为 className_studentName = ‘软工205_张三’ 这个就可分为className和studentName 所以就不满足第一范式
2.第二范式(2NF)
第二范式是在第一范式(1NF)的基础上建立起来的,即满足第二范式(2NF)必须先满足第一范式1NF。
2NF在1NF的基础之上,消除了非主属性对于码的部分函数依赖。
所以看 是否存在非主属性对于码的部分函数依赖
//所以确定是否是第二范式,判断其是否主键唯一。非主属性直接完全依赖或间接完全依赖候选键。(不可部分依赖候选键)(不符合就会数据冗余,更新异常,插入异常,删除异常)
什么是函数依赖:
函数依赖
我们可以这么理解(但并不是特别严格的定义):若在一张表中,在属性(或属性组)X的值确定的情况下,必定能确定属性Y的值,那么就可以说Y函数依赖于X,写作 X → Y。
函数依赖写法:
姓名函数依赖于学号
写作 学号 → 姓名。
可以理解为一个学号对应一个唯一的姓名,即为姓名函数依赖学号
完全函数依赖为F
不完全函数依赖为P
传递函数依赖为T
相关概念:
码(键) 学号唯一无重复即为码
包含码的属性为主属性
所以非主属性就是不为码
知乎大神讲解:数据库三范式
3.第三范式(3NF)
第三范式(3NF)要求一个数据库表中不包含已在其它表中已包含的非主关键字信息。
即不能有传递依赖