范式理论1,2,3范式

参考视频:https://www.bilibili.com/medialist/play/ml1197555156/BV1LW411a7wB

1.什么是范式?

范式就是关系型数据库在设计的时候,要遵守一定的规范要求.

有第一范式(1NF),第二范式(2NF),第三范式(3NF),巴基-科德范式(BCNF),第四范式(4NF)和第五范式(5NF).

范式可以理解为一张数据表的表结构所符合的设计标准的等级.

2.使用范式的根本目的?

  • 减少数据冗余,尽量让每一个数据只出现一次.
  • 保证数据的一致性.

缺点:在获取数据的时候,需要通过 join 连接获取到最后的数据.

3.第一范式(1ND)

满足原子性,字段属性不可再切分

比如:

商品
鸡蛋,15,1

属性不唯一,还可以切分,所以就不满足第一范式.

正确因还是:

商品名称 商品数量 商品单价
鸡蛋 15 1

现在每一个字段一个属性,不可再切分.满足第一范式.

4.第二范式(2ND)

不能存在部分函数依赖,就是去除部分依赖关系

扫描二维码关注公众号,回复: 12961820 查看本文章

比如表:

id 姓名 系名 系主任 课名 分数
000001 张三 机械 陈黎明 机械基础 60
000001 张三 机械 陈黎明 专业英语 88
000001 张三 机械 陈黎明 高等数学 84
000002 李四 工学 张国 高等数学 64

什么是部分函数依赖:

就是A依赖于B和C,A又依赖于B.

什么意思呢?就是通过B和C可以确定A,但是只通过B也可以确定A.这个A就有部分依赖,A依赖于B和C,A又依赖于B,那么C就就是A的部分依赖,多余了.

这个表有两个主键.学号和课名.可以通过两个主键学号id和课名确定分数,但是缺少其中任意一个主键都不能够确认分数,这是完全依赖,可以的.

然后通过学号id和课名可以确定姓名,但是只通过学号id就能确定姓名.所以他是有部分依赖的.

满足第二范式就要去除部分依赖,拆分:

id 姓名 系名 系主任
000001 张三 机械 陈黎明
000002 李四 工学 张国
id 课名 分数
000001 机械基础 60
000001 专业英语 88
000001 高等数学 84
000002 高等数学 64

此时不存在部分依赖,满足第二范式.

5.第三范式(3ND)

不能存在传递函数依赖

比如A依赖于B,B依赖于C,然后C就传递函数依赖于A,这就是传递函数依赖.

id 姓名 系名 系主任
000001 张三 机械 陈黎明
000002 李四 工学 张国

系名依赖于学号id,系主任依赖于系名,所以系主任传输依赖于学号id,

不满足第三范式,需要拆分:

id 姓名 系名
000001 张三 机械
000002 李四 工学
系名 系主任
机械 陈黎明
工学 张国
id 课名 分数
000001 机械基础 60
000001 专业英语 88
000001 高等数学 84
000002 高等数学 64

​ 符合第三范式.

在设计表结构的时候不一定要根据三范式,因为三范式是减少了数据的冗余,但是要查所有的数据就需要将所有的表join,降低了查询效率.
具体要不要完全满足三范式,根据自己业务需求决定吧.

猜你喜欢

转载自blog.csdn.net/weixin_47699191/article/details/114558551
今日推荐