您的位置:首页 > 数据库

数据库三大范式学习理解

2017-08-20 13:47 239 查看
范式,一般指的是关系型数据库理论的基础,也是我们在设计数据库结构过程中所要遵循的规则和指导方法。目前有迹可循的共有8种范式,依次是:1NF,2NF,3NF,BCNF,4NF,5NF,DKNF,6NF。通常我们所用到的就只是前三个范式,即:第一范式(1NF),第二范式(2NF),第三范式(3NF)。

第一范式(无重复的列)

定义:数据库表中的每一列都是不可分割的原子数据项,而不能是集合、数组、记录等非原子数据项。如果实体中的某个属性有多个值时,必须拆分为不同的属性。

也就是说,第一范式强调的是原子性,即列不能再分成其他几列。

例如:班级:软件工程1403班,应该分为两个字段,一个专业(软件工程),一个班级(1403班)才满足第一范式

不满足第一范式:

学号 姓名
班级

0006 小吕
软件工程1403班

应该改为:

学号 姓名
专业 班级

0006 小吕
软件工程 1403班

第二范式(属性完全依赖于主键)

定义:在满足第一范式的前提下,当存在多个主键的时候,才会发生不满足第二范式的情况。比如有两个主键,不能存在这样的属性,它只依赖于一个主键,这就是不符合第二范式。

 也就是说,任意一个字段都只依赖于表中的同一个字段,该字段为该表中主键。

例如:学生证号(主键),学生证名称,学生证办理时间,借书证号(主键),借书证名称,借书证办理时间,学生证名称和学生证办理时间依赖于主键学生证号,而借书证名称和借书证办理时间依赖于主键借书证号。

应该改为:

【学生证表】

学生证号 学生证名称
学生证办理时间

** **
**

【借书证表】

借书证号 借书证名称
借书证办理时间

** **
**

第三范式(属性不能传递依赖于主属性)

定义:在满足第二范式的前提下,如果某一属性依赖于其他非主键属性,而其他非主键属性有依赖于主键,那么这个属性就是间接依赖于主键,这就被称作依赖于主属性。

也就是说,一张表最多只存在2层同类型信息。

例如:爸爸资料表

爸爸 儿子
女儿 女儿的小熊
女儿的海绵宝宝

** **
** **
**

应该改为:

【爸爸信息表】

爸爸 儿子
女儿

** **
**

【女儿信息表】

女儿 女儿的小熊
女儿的海绵宝宝

** **
**
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: