范式理论1,2,3范式

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

1.什么是范式?

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

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

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

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

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

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

3.第一范式(1ND)

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

比如:

商品
鸡蛋,15,1

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

正确因还是:

商品名称商品数量商品单价
鸡蛋151

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

4.第二范式(2ND)

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

比如表:

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,降低了查询效率.
具体要不要完全满足三范式,根据自己业务需求决定吧.

  • 4
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值