数据库三大范式

第一范式(1NF):符合1NF的关系中的每个属性都不可再分。

这里写图片描述
这张表中,进货属性,销售属性就都不是原子的,应该再拆分。如下:
这里写图片描述

第二范式(2NF):2NF在1NF的基础之上,消除了非主属性对于码的部分函数依赖。

码就是主键的意思,非主属性就是除去码之外的属性。这种情况一般来说,码中两个或两个以上的属性,然后存在一些属性只是依赖码的部分属性,而不不整个码的属性。例如有一张如下:
这里写图片描述
这里,码为(学号,课名),分数这个属性满足2NF,因为其完全依赖于码(学号,课名),但是姓名,系名,系主任这些就不满足了,因为这些属性,只是依赖于学号这个主属性,所以说是部分依赖码。依赖关系如下:
这里写图片描述
所以可以把关系拆开:
这里写图片描述
所以可以拆为两个表,上面为一个,下面为一个,如下:
这里写图片描述

第三范式(3NF):消除了非主属性对于码的传递函数依赖

对于学生表,主码为学号,主属性为学号,非主属性为姓名、系名和系主任。因为 学号 → 系名,同时 系名 → 系主任,所以存在非主属性系主任对于码学号的传递函数依赖,所以学生表的设计,不符合3NF的要求。
为了让数据表设计达到3NF,我们必须进一步进行模式分解为以下形式:
选课(学号,课名,分数)
学生(学号,姓名,系名)
系(系名,系主任)
这里写图片描述
完整的表如下:
这里写图片描述

总结

第二范式是看有没有存在属性,只是部分依赖关键字的,第三范式是看有没有属性其实是直接依赖于其他属性的。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值