没有规范化,数据的更新处理将变得困难,异常的插入、修改、删除数据的操作会频繁发生。

我们先来看一下三范式的定义

 第一范式(1NF):强调的是列的原子性,即列不能够再分成其他几列。

第二范式(2NF):首先是 1NF,另外包含两部分内容,一是表必须有一个主键;二是没有包含在主键中的列必须完全依赖于主键,而不能只依赖于主键的一部分。

第三范式(3NF):首先是 2NF,另外非主键列必须直接依赖于主键,不能存在传递依赖。即不能存在:非主键列 A 依赖于非主键列 B,非主键列 B 依赖于主键的情况。

我们看一下这张表

数仓表之三范式

上面这张表是不规范的,看到张三的电话一栏中有2个电话号码

就违背了第一范式的原子性(不可分割性),现在将其更改为下图模式

数仓表之三范式

改完后满足了第一范式,但是此表还是有其他问题的

例如,员工表的一个候选键是 {id , mobile , deptNo} ,而 deptName 依赖于 {deptNo} ,同样 name 仅依赖于 {id} ,因此不是 2NF 的。为了满足第二范式的条件,需要将这个表
拆分成 employee 、 dept 、 employee_dept 、 employee_mobile 四个表

数仓表之三范式

数仓表之三范式

数仓表之三范式

数仓表之三范式

如上图的四个表  ID个人信息表、部门编号与部门名称表、ID部门编号表、ID手机号码表

其中  ID个人信息表还是存在问题 其中邮编依赖于城市 城市再依赖于ID  所以其不符合第三范式的规则,所以要讲这张表再拆分为二,将邮编和城市的表单独拆分出来

数仓表之三范式

数仓表之三范式

 

这样所有的表都符合了三范式,

我们将一张表成功的拆分成了5张表。

相关文章:

  • 2021-05-15
  • 2022-01-07
  • 2021-06-08
  • 2021-07-30
  • 2021-09-15
  • 2021-10-17
  • 2021-06-01
  • 2021-04-14
猜你喜欢
  • 2021-04-04
  • 2021-04-28
  • 2021-08-04
  • 2022-01-07
  • 2021-08-31
  • 2022-12-23
  • 2021-07-11
相关资源
相似解决方案