数据库四种范式和部分依赖,完全依赖,传递依赖

数据库范式

设计数据库时,根据不同的规范要求,设计出合理的关系型数据库。而这些规范就叫做范式,越高的范式冗余越小

一般的数据库只遵循第一范式,第二范式,第三范式就足够了。满足了这三个范式的数据库一般都是简单和结构清晰的,同时也不会发生insert,delete,update的操作异常。

六个范式分别为:

  1. 第一范式(1NF)
  2. 第二范式(2NF)
  3. 第三范式(3NF)
  4. 巴斯-科德范式(BCNF)
  5. 第四范式(4NF)
  6. 第五范式(5NF,又称完美范式)

第一范式(1NF)
在关系模型中,对于添加一个规范的要求,所有的域都是原子性的,即数据库的每一个项都是不可分割的原子数据项,而不能是集合、数组、记录等非原子的数据项。
实现某个属性有多个值时,必须拆分为不同的属性,第一范式无重复的域。

第二范式(2NF)
第二范式就是在第一范式的基础上完全依赖于主键。消除了部份依赖(最后会说明三种依赖)
数据库表中的每个实例或记录必须可以被唯一的区分。选取一个能区分每个实体的属性或属性组,作为实体的唯一表示。
例如,学生号可以实现每一个学生的区分,学生号就是候选键。找不到候选键,就要增加额外属性实现区分。

第三范式(3NF)
在2NF的基础上,任何非主属性不依赖于其他非主属性。在3NF要求一个关系不包含已在其他关系中已包含的非关键字信息。即任何非主属性不传递依赖于主属性
例如,班级表,班级编号class_Id,年级信息等;那么在学生表中,列出班级编号后就不再显示年级信息等。

巴斯-科德范式(BCNF)
在3NF的基础上,任何主属性不能对主属性子集依赖,即在3NF基础上消除对主码子集的依赖
BCNF没有加入新的设计规范,只是对第二范式和第二范式的设计规范要求更强,因此被认为是修正第三范式,也就是说,它事实上是对第三范式的修正,是数据库冗余度更小。

部分依赖,完全依赖,传递依赖

部分依赖
通过AB能得出C,通过A也能得出C,通过B也能得出C,那么说C部分依赖于AB。

完全依赖
通过AB能得出C,但是AB单独得不出C,那么说C完全依赖于AB。

传递依赖
通过A得到B,通过B得到C,但是C得不到B,B得不到A,那么说C传递依赖于A。

你可能感兴趣的:(SQL)