数据库三范式设计

1.1什么是范式

  • 范式是指:设计数据库表的规则(Normal Form)好的数据库设计对数据的存储性能和后期的程序开发,都会产生重要的影响。建立科学的,规范的数据库就需要满足一些规则来优化设计的设计和存储。

1.2 范式的基本分类

  •  目前关系数据库有六种范式:第一范式(1NF)、第二范式(2NF)、第三范式(3NF)、巴斯-科德范式
    (BCNF)、第四范式(4NF)和第五范式(5NF,又称完美范式)。满足最低要求的范式是第一范式(1NF)。在
    第一范式的基础上进一步满足更多规范要求的称为第二范式(2NF),其余范式以次类推。一般说来,数据库只需
    满足第三范式(3NF)就行了。

1.3 范式的作用

  •  数据库三范式的作用:规范了我们设计表的时候要遵守的一些规则。

2.1 第一范式

  •  数据库表的每一列都是不可分割的单元
  • 即数据库表的每一列都是不可分割的原子数据项,而不能是集合、数组、记录等非原子数据项。即实体中的某个属性有多个值时,必须拆分为不同的属性。在符合第一范式(1NF)表中每个值只能是表的一个属性或一个属性的一部分。简而言之,第一范式每一列不可再拆分,称为原子性。
  • 不遵守第一范式引发的问题:查询比较麻烦

 数据库三范式设计_第1张图片

数据库三范式设计_第2张图片


3.1第二范式

  • 一张表只描述一件事情(一个表对应一个事物)
  • 表中的每一个字段都依赖于主键(一个表的数据应该是属于该事物的直接属性)
  • 第二范式(2NF)要求数据库表中的每个实例或记录必须可以被唯一地区分。选取一个能区分每个实体的属性或属
    性组,作为实体的唯一标识。例如在员工表中的身份证号码即可实现每个员工的区分,该身份证号码即为候选键,
    任何一个候选键都可以被选作主键。在找不到候选键时,可额外增加属性以实现区分。 第二范式(2NF)要求实
    体的属性完全依赖于主关键字。所谓完全依赖是指不能存在仅依赖主关键字一部分的属性。如果存在,那么这个属
    性和主关键字的这一部分应该分离出来形成一个新的实体,新实体与原实体之间是一对多的关系。为实现区分通常
    需要为表加上一个列,以存储各个实例的唯一标识。简而言之,第二范式就是在第一范式的基础上属性完全依赖于
    主键。
  • 不遵守第二范式引发的问题:数据的冗余
  • 遵守第二范式的表:

数据库三范式设计_第3张图片


4.1 第三范式

  • 第三范式: 在2NF基础上,任何非主属性不依赖于其它非主属性.(引用其他表的主键)

  • 在2NF基础上,任何非主属性不依赖于其它非主属性(在2NF基础上消除传递依赖) 第三范式(3NF)是第二范式
    (2NF)的一个子集,即满足第三范式(3NF)必须满足第二范式(2NF)。简而言之,第三范式(3NF)要求一
    个关系中不包含已在其它关系已包含的非主关键字信息。

数据库三范式设计_第4张图片

你可能感兴趣的:(mysql数据库)