数据库 范式

在这里插入图片描述

第一范式:数据不再分

例:不允许这样

在这里插入图片描述

第二范式:有(组合)主键可以唯一标识一行

所有非主属性都要和该数据表的主键有完全依赖关系

如果有哪些非主属性只和主键的一部份有关的话,它就不符合第二范式。

完全依赖:AB->C,仅凭单个A或单个B无法决定C

部分依赖:AB->C,单个A或单个B也能决定C

Ps:如果主键只有一个属性的话,那就不用纠结这里的条件了,肯定是第二范式

第三范式:不存在传递依赖

首先!! 并不是A->B,B->C,A->C就算传递依赖!!

传递依赖:

在关系模式中,如果Y→X,X→A,且X不决定Y,和A不属于X(A不是X的子集),那么称Y→A是传递依赖。

再看第三范式的判定:

关系模式R<U,F> 中若不存在这样的码X、属性组Y及非主属性Z,使得X→Y,Y→Z,成立,Y→X不成立,则称R<U,F> ∈ 3NF。

      百度百科

Ps:是不存在,才判定为3NF

若有上面的关系,则不是3NF

不要怕看不懂!看不懂都是因为你对一些定义不熟,查它!

可以参考:数据库的一些名词

再看看第三范式要消除的对象:

对于一个满足2nd NF 的数据结构来说,表中有可能存在某些数据元素依赖于其他非关键字数据元素的现象,必须消除。

这里要消除的其实就是上面定义的Y->Z的情况(非主属性Z依赖于不是主键的Y)

Ps:如果表不存在非主属性,都是主属性,那么可以直接3NF起步

因为前面的1~3NF都主要是对非主属性进行约束

BC范式:非平凡函数依赖X->Y中X都是超键

还有一个标准:不允许主属性决定主属性

Ps:一般判断到BC范式就ok了

第四范式:属性项不允许多值

例:(用户id,手机号码)

id 手机号码

10 157************66

10 138************65

存在一个用户拥有多个手机号码的情况,则不满足第四范式

第五范式:消除了4NF中的连接依赖

例:(销售人员,供货商,产品)

把上表拆解成三个小表:

(销售人员,供货商)(销售人员,产品)(供货商,产品)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值