数据库设计范式与要点

范式与实现

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

第一范式

  • 所谓第一范式(1NF)是指在关系模型中,对于添加的一个规范要求,所有的域都应该是原子性的,即数据库表的每一列都是不可分割的原子数据项,而不能是集合,数组,记录等非原子数据项。
  • 即实体中的某个属性有多个值时,必须拆分为不同的属性。在符合第一范式(1NF)表中的每个域值只能是实体的一个属性或一个属性的一部分。
  • 简而言之,第一范式就是无重复的域。
  • 每一项都是独立与原子,不可分割

第二范式

  • 在第一范式的基础上
  • 要求实体的属性完全依赖于主关键字。所谓完全依赖是指不能存在仅依赖主关键字一部分的属性,
  • 如果存在,那么这个属性和主关键字的这一部分应该分离出来形成一个新的实体,新实体与原实体之间是一对多的关系。
  • 为实现区分通常需要为表加上一个列,以存储各个实例的唯一标识。
  • 简而言之,第二范式就是在第一范式的基础上属性完全依赖于主键。1对1

第三范式

  • 在2NF基础上,任何非主属性不依赖于其它非主属性(在2NF基础上消除传递依赖)
  • 第三范式就是属性不依赖于其它非主属性,也就是在满足2NF的基础上,任何非主属性不得传递依赖于主属性。
  • 如员工表不应出现部门名称的属性