快速理解三大范式

三大范式

第一范式:要求每一个字段原子性不可再分

第二范式:要求所有非主键字段完全依赖主键,不能产生部分依赖

第三范式:所有非主键字段和主键字段之间不能产生传递依赖

第一范式(1NF)

要求每一个字段原子性不可再分

学号姓名性别家长手机号
2018001张三张二,李梅12222222223
2018002李四李三,姚月12341255666
2018003王五王四,吴新12344567788

家长这个字段里,包含了父亲和母亲,不符合第一范式的原子性,要把家长字段分成父亲和母亲2个字段

如下:

学号姓名性别父亲母亲手机号
2018001张三张二李梅12222222223
2018002李四李三姚月12341255666
2018003王五王四吴新12344567788

第二范式(2NF)

在第一范式的基础上,要求所有非主键字段完全依赖主键,不能产生部分依赖

学号和课程为联合主键

学号姓名课程成绩
2018001张三java70
2018001张三c++66
2018002李四java88
2018003王五c++85

张三(姓名)依赖于学号,张三(姓名)能依赖与课程嘛? 课程有很多个,不属于1对1关系,课程就不能作为张三(姓名)的主键,所以张三(姓名)只是部分依赖。不符合第二范式。

为了满足第二范式,要把这张表拆分为学生表,课程表和成绩表

学生表:

学号姓名
2018001张三
2018002李四
2018003王五

课程表:

课程ID课程
001java
002c++

成绩表:

学号课程ID成绩
201800100170
201800100266
201800200188
201800300285

这里的 学号和课程ID属于联合主键, 学号和课程ID 对应 成绩,属于1对1关系,即每个人的课程只有一个成绩

第三范式(3NF)

在第二范式的基础上,所有的非主键字段跟主键字段之间不能产生传递依赖

即A(主键)-> B (非主键) ->C(非主键)

学号姓名寝室寝室床位
2018001张三0016
2018002李四0025
2018003王五0016

在这里的学号跟寝室对应,寝室跟寝室床位对应,即学号跟寝室床位产生了传递依赖。

为了满足第三范式,把表分成 学生表和寝室表

学生表:

学号姓名寝室
2018001张三001
2018002李四002
2018003王五001

寝室表:

寝室寝室床位
0016
0025

三大范式:

第一范式:要求每一个字段原子性不可再分

第二范式:要求所有非主键字段完全依赖主键,不能产生部分依赖

第三范式:所有非主键字段和主键字段之间不能产生传递依赖

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值