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