MySql 数据库【数据库设计的三范式】

发布于:2022-12-14 ⋅ 阅读:(289) ⋅ 点赞:(0)

MySql 数据库【数据库设计的三范式】

1. 第一范式

要求任何一张表必须有主键,每一个字段的原子性不可再分。

最核心,最重要的范式,所有表的设计都需要满足。
必须有主键,并且每一个字段都是原子性不可再分。

在这里插入图片描述
以上学生表,满足第一范式吗?
不满足

  1. 没有主键。
  2. 联系方式可以分为邮箱地址和电话

在这里插入图片描述

2. 第二范式

建立在第一范式的基础之上,要求所有非主键字段完全依赖主键,不要产生部分依赖。

在这里插入图片描述
分析以上的表是否满足第一范式?
不满足:没有主键

修改:
学生编号+教师编号,两个字段联合起来做主键,复合主键。
在这里插入图片描述

上述表满足第二范式吗?
不满足
“张三” 依赖 1001,“王老师” 依赖 001,产生了部分依赖

产生部分依赖的缺点:
数据冗余、空间浪费
张三重复了、王老师重复了

修改:
在这里插入图片描述

口诀
多对多,三张表,关系表两个外键!!!!!!

3. 第三范式

建立在第二范式的基础之上,要求所有非主键字段直接依赖主键,不要产生传递依赖。

在这里插入图片描述

分析以上表是否满足第一范式?
满足:有主键。

分析以上表是否满足第二范式?
满足:因为主键不是复合主键,没有产生部分依赖。主键是单一主键。

分析以上表是否满足第三范式?
不满足:产生了传递依赖
一年一班依赖 01,01 依赖 1001,产生了传递依赖。
不符合第三范式的要求。产生了数据的冗余。

修改:
在这里插入图片描述
口诀
一对多,两张表,多的表加外键!!!!!!