1.1什么是范式:
- 范式是指:设计数据库表的规则(Normal Form)好的数据库设计对数据的存储性能和后期的程序开发,都会产生重要的影响。建立科学的,规范的数据库就需要满足一些规则来优化设计的设计和存储。
1.2 范式的基本分类:
- 目前关系数据库有六种范式:第一范式(1NF)、第二范式(2NF)、第三范式(3NF)、巴斯-科德范式
(BCNF)、第四范式(4NF)和第五范式(5NF,又称完美范式)。满足最低要求的范式是第一范式(1NF)。在
第一范式的基础上进一步满足更多规范要求的称为第二范式(2NF),其余范式以次类推。一般说来,数据库只需
满足第三范式(3NF)就行了。
1.3 范式的作用:
- 数据库三范式的作用:规范了我们设计表的时候要遵守的一些规则。
2.1 第一范式:
- 数据库表的每一列都是不可分割的单元。
- 即数据库表的每一列都是不可分割的原子数据项,而不能是集合、数组、记录等非原子数据项。即实体中的某个属性有多个值时,必须拆分为不同的属性。在符合第一范式(1NF)表中每个值只能是表的一个属性或一个属性的一部分。简而言之,第一范式每一列不可再拆分,称为原子性。
- 不遵守第一范式引发的问题:查询比较麻烦。
3.1第二范式:
- 一张表只描述一件事情(一个表对应一个事物)。
- 表中的每一个字段都依赖于主键(一个表的数据应该是属于该事物的直接属性)。
- 第二范式(2NF)要求数据库表中的每个实例或记录必须可以被唯一地区分。选取一个能区分每个实体的属性或属
性组,作为实体的唯一标识。例如在员工表中的身份证号码即可实现每个员工的区分,该身份证号码即为候选键,
任何一个候选键都可以被选作主键。在找不到候选键时,可额外增加属性以实现区分。 第二范式(2NF)要求实
体的属性完全依赖于主关键字。所谓完全依赖是指不能存在仅依赖主关键字一部分的属性。如果存在,那么这个属
性和主关键字的这一部分应该分离出来形成一个新的实体,新实体与原实体之间是一对多的关系。为实现区分通常
需要为表加上一个列,以存储各个实例的唯一标识。简而言之,第二范式就是在第一范式的基础上属性完全依赖于
主键。- 不遵守第二范式引发的问题:数据的冗余。
- 遵守第二范式的表:
4.1 第三范式:
第三范式: 在2NF基础上,任何非主属性不依赖于其它非主属性.(引用其他表的主键)
在2NF基础上,任何非主属性不依赖于其它非主属性(在2NF基础上消除传递依赖) 第三范式(3NF)是第二范式
(2NF)的一个子集,即满足第三范式(3NF)必须满足第二范式(2NF)。简而言之,第三范式(3NF)要求一
个关系中不包含已在其它关系已包含的非主关键字信息。