diff --git a/Database.md b/Database.md index ad07c34..6a8653f 100644 --- a/Database.md +++ b/Database.md @@ -23,7 +23,7 @@ ## 第一范式(1NF) -**所有字段值都是不可分解的原子值**。即实体中的某个属性有多个值时,必须拆分为不同的属性。例如: +**所有字段的值都是不可分解的原子值**。即实体中的某个属性有多个值时,必须拆分为不同的属性。例如: **用户信息表** @@ -35,9 +35,9 @@ **用户信息表** -| 编号 | 姓名 | 年龄 | 省份 | 城市 | 详细地址 | -| ---- | ---- | ---- | ------ | ------ | ---------------- | -| 1 | 小王 | 23 | 浙江省 | 杭州市 | 拱墅区湖州街51号 | +| 编号 | 姓名 | 年龄 | 省份 | 城市 | 区县 | 详细地址 | +| ---- | ---- | ---- | ------ | ------ | ------ | ---------- | +| 1 | 小王 | 23 | 浙江省 | 杭州市 | 拱墅区 | 湖州街51号 | **好处** @@ -48,7 +48,11 @@ ## 第二范式(2NF) -**确保数据库表中的每一列都和主键相关,而不能只与主键的某一部分相关**(主要针对联合主键而言)。也就是说在一个数据库表中,一个表中只能保存一种数据,不可以把多种数据保存在同一张数据库表中。例如: +**所有非主键列必须全部依赖于全部主键**。符合与不符合的场景如下: + +![img](images/Database/2NF.png) + +案例如下: **学生课程表** @@ -93,7 +97,11 @@ ## 第三范式(3NF) -**确保数据表中的每一列数据都和主键直接相关,而不能间接相关**。满足第二范式( 2NF)的情况下,任何非主属性不依赖于其它非主属性(消除传递函数依赖)。例如: +**在满足1NF和2NF的前提下,非主键列之间不存在间接依赖关系**(消除传递函数依赖)。 + +![img](images/Database/3NF.png) + +案例如下: **学生表** diff --git a/images/Database/2NF.png b/images/Database/2NF.png new file mode 100644 index 0000000..08196e4 Binary files /dev/null and b/images/Database/2NF.png differ diff --git a/images/Database/3NF.png b/images/Database/3NF.png new file mode 100644 index 0000000..fa28184 Binary files /dev/null and b/images/Database/3NF.png differ