|
|
@ -6,21 +6,6 @@
|
|
|
|
|
|
|
|
|
|
|
|
# 数据库范式
|
|
|
|
# 数据库范式
|
|
|
|
|
|
|
|
|
|
|
|
- **1NF**:所有字段值都是不可分解的原子值
|
|
|
|
|
|
|
|
- **2NF**:确保数据库表中的每一列都和主键相关,而不能只与主键的某一部分相关
|
|
|
|
|
|
|
|
- **3NF**:确保数据表中的每一列数据都和主键直接相关,而不能间接相关
|
|
|
|
|
|
|
|
- **BCNF**:并且主属性不依赖于主属性
|
|
|
|
|
|
|
|
- **第四范式(4NF)**:要求把同一表内的多对多关系删除
|
|
|
|
|
|
|
|
- **第五范式(5NF)**:从最终结构重新建立原始结构
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
> 四种范式之间的关系:
|
|
|
|
|
|
|
|
>
|
|
|
|
|
|
|
|
> 1NF→2NF:消去非主属性对键的部分函数依赖
|
|
|
|
|
|
|
|
>
|
|
|
|
|
|
|
|
> 2NF→3NF:消去非主属性对键的传递函数依赖
|
|
|
|
|
|
|
|
>
|
|
|
|
|
|
|
|
> 3NF→BCNF:消去主属性对键的传递函数依赖
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
## 第一范式(1NF)
|
|
|
|
## 第一范式(1NF)
|
|
|
|
|
|
|
|
|
|
|
|
**所有字段的值都是不可分解的原子值**。即实体中的某个属性有多个值时,必须拆分为不同的属性。例如:
|
|
|
|
**所有字段的值都是不可分解的原子值**。即实体中的某个属性有多个值时,必须拆分为不同的属性。例如:
|
|
|
@ -137,7 +122,7 @@
|
|
|
|
|
|
|
|
|
|
|
|
## 巴斯-科德范式(BCNF)
|
|
|
|
## 巴斯-科德范式(BCNF)
|
|
|
|
|
|
|
|
|
|
|
|
在3NF基础上,**消除主属性之间的传递函数依赖**,即存在多个主属性时,**主属性不依赖于主属性**。例如:
|
|
|
|
在3NF基础上,**主属性之间不存在部分或传递依赖**。例如:
|
|
|
|
|
|
|
|
|
|
|
|
**配件表**
|
|
|
|
**配件表**
|
|
|
|
|
|
|
|
|
|
|
@ -183,9 +168,9 @@
|
|
|
|
|
|
|
|
|
|
|
|
## 第四范式(4NF)
|
|
|
|
## 第四范式(4NF)
|
|
|
|
|
|
|
|
|
|
|
|
在满足第三范式(3NF)的前提下,表中不能包含一个实体的两个或多个互相独立的多值因子。
|
|
|
|
在BCNF基础上,**需要消除多对多关系**。
|
|
|
|
|
|
|
|
|
|
|
|
当一个表中非主属性相互独立时(即在 3NF 基础上),这些非主属性不应该有`多值`。即表中不能包含一个实体的两个或多个互相独立的多值因子。例如:
|
|
|
|
例如:
|
|
|
|
|
|
|
|
|
|
|
|
**客户联系方式**
|
|
|
|
**客户联系方式**
|
|
|
|
|
|
|
|
|
|
|
|