数据库三大范式

(1)1NF

定义:所有的属性均为原子属性,即数据库表的每一列都是不可分割的原子数据项,而不能是集合,数组,记录等非原子数据项。

弊端:如果仅仅符合第一范式的设计,仍然会存在数据冗余过大,插入异常,删除异常,修改异常的问题,例如:

  1.表中学生的学号、姓名、系名、系主任等数据重复出现--------数据冗余过大。

  2.假如学校3月份新创建了一个系,等到9月份的时候才能招收学生,那么无法将该系名与系主任单独添加到数据表中----插入        

     异常。

  3. 假如将某个系的所有学生相关数据都删除,那么该系与系主任的数据也就随之消失了-----删除异常。  

  4. 如果将学生李小明转到法律系,则需要修改3行表数据-----修改异常。 

(2)2NF

定义:表中的所有属性都必须完全依赖于所有主键(主键可能由多个属性构成),不能存在依赖部分主键的情况。

满足第二范式后上表就成为:

  进行第一范式上表中的操作:

  1. 学生的姓名、学号、系名、系主任不没有重复出现-------有改进。

  2.添加一个尚无学生的新系,因为学生表的码是学号,不能为空,所以添加失败-------无改进。

  3.删除某个系中所有学生的记录,该系的信息仍然全部丢失-------无改进。

  4.将学生李小明转移到法律系,只需要修改一次李小明对应的系的值即可-------有改进。

(3)3NF

定义:一张表中的非主属性不能与非主属性之间存在依赖关系,如第2NF学生表存在学号->系名,系名->系主任,而系名和系主任都是非主属性,不满足3NF。

  满足第三范式后上表就成为:

  

  进行第二范式上表中的操作:  

  1.删除某个系中的所有学生相关记录,该系的信息不会丢失------有改进。

  2.插入一个尚无学生的新系的信息,因为系表与学生表是两张独立的表,所以不影响------有改进。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值