mysql三种范式概述

  

<强>

<强> 1。第一范式,最基本的范式,数据表中每一列的属性都是单一的,不可再分!
强例如:顾客表(姓,名编号,地址,……),其中“地址“列还可以细分为国家,省,市,区等。

<强> 2。第二范式,确保表中每列都和主键相关,一个关系满足第一范式,除了主键以外其它列,都依赖该主键
强例如:订单表(订单编号,产品编号,定购日期,价格,……),“订单编号“为主键,“产品编号“和主键列没有直接的关系,即“产品编号“列不依赖于主键列,应删除该列。

<强> 3。第三范式,满足第二范式关系,除了主键外其它列都不依赖主键列!
 mysql三种范式概述

例如:订单表(订单编号,定购日期,顾客编号,顾客姓名,……),初看该表没有问题,满足第二范式,每列都和主键列“订单编号“相关,再细看你会发现“顾客姓名“和“顾客编号“相关,“顾客编号“和“订单编号“又相关,最后经过传递依赖,“顾客姓名“也和“订单编号“相关。为了满足第三范式,应去掉“顾客姓名“列,放入客户表中。

<强> <强> <强> <强> <强> * * * * 原则:<强> <强> <强> <强> <强> <强> <强> <强> * * * *

原则:当出现字段与字段的组合重复,如上的A和C的组合重复,首先要考虑的就是把他们拆分为2个表,具体是C拆到表1,还是一个拆到表1,看情况而定

关键要理解定义这种范式标准的主要目的是为了减少数据冗余,数据冗余产生的本质就是在一个表中存在字段与字段之间的一对多,或者多对多关系。解决这个几对几的关系问题,就能轻易实现满足第三范式的数据库设计。

<强> <强> <强> <强> <强> <强> * * * * 总结* <强> <强> <强> <强> <强> <强> * *

归结起来3句话:

1 nf:字段不可分;
2 nf:有主键,非主键字段依赖主键;
3 nf:非主键字段不能相互依赖;

解释:
1 nf:原子性字段不可再分,否则就不是关系数据库;
2 nf:唯一性一个表只说明一个事物;
3 nf:每列都与主键有直接关系,不存在传递依赖;

  

mysql三种范式概述