数据库三大范式

发布于 2020-03-15  224 次阅读


对于数据库而言,三大范式是常说的设计模试,所以这就写一下我对三大范式的理解

第一范式:列不可分

所谓第一范式是指数据库表的每一列都是不可分割的基本数据项,同一列中不能有多个值,即实体中的某个属性不能有多个值或者不能有重复的属性。如果出现重复的属性,就可能需要定义一个新的实体,新的实体由重复的属性构成,新实体与原实体之间为一对多关系。在第一范式(1NF)中表的每一行只包含一个实例的信息。

上面这一段是不是有点不好理解?

举个例子:

如上面这张表,根所第一范式,同一列中不能有多个值,所以每个单元格只能有一个值,所以这个表必需拆分,而且定单和商品是俩个实体,所以要新建一张订单表

如上,我面便符合了第一范式

第二范式:不能部份依赖

第二范式(2NF)是在第一范式(1NF)的基础上建立起来的,即满足第二范式(2NF)必须先满足第一范式(1NF)。第二范式(2NF)要求数据库表中的每个实例或行必须可以被唯一的区分。为实现区分通常需要为表加上一个列,以存储各个实例的惟一标识。要求实体的属性完全依赖于主关键字。

简单说,如果你要添加个商品,如 笔记本 那我要如何添加在商品例表?由于没有个独立商品表,所以,这条范式要示,每个实例是唯一区分的,而依赖表存的是实例的唯一主键,而不是整个实列!

举个例子:

这样,定单,商品,以及俩者的对应就都分开了,这样我们就符合了第二范式。

第三范式:无传递依赖

第三范式需要确保数据表中的每一列数据都和主键直接相关,而不能间接相关。

这条比较简单,说白了,你不能让不同实体的数据直接写在一个表里。所以第一个表还要分成定单和用户!

举个例子 :

致此,我们终于完成了三大范式,这样我们就是个标准的数据表了!


欢迎来到欧喵的博客,喜欢就看看吧