转载:解决数据冗余,插入,删除更新异常——数据依赖与规范化

转自https://blog.csdn.net/weixin_36027342/article/details/82769388

在对数据库进行一些操作的时候我们可能会遇到以下的一些问题:

  • 数据冗余(想修改一个属性,就要更新多行数据)
  • 插入异常(想要插入数据,结构因为表设计的问题,导致不能成功插入)
  • 删除异常(只想删除其中的某些数据 ,结果把不该删的也删了)
  • 更新异常(想更新一条数据,结果工作量大,还容易出错)

其实这就是因为有数据依赖的原因,因为彼此之间有一些依赖关系,所以导致我们的操作总是牵涉颇多,处理不干净

数据依赖的几个重要函数依赖:

1. 完全函数依赖
比如在学生课程(学号,课程号,成绩)关系中,"学号,课程号"是主码,只有学号不能确定成绩,只有课程号也不能确定成绩,因此"成绩"完全函数依赖与(学号,课程号)

2. 部分函数依赖
比如在学生课程(学号,课程号,学生姓名,成绩)关系中,"学号,课程号"是主码,只有学号是可以确定学生姓名的,因此存在部分依赖

3. 传递函数依赖
在学生关系(学号,姓名,性别,所在系,系主任)中,学号可以确定所在系,所在系可以确定系主任,因此学号可以确定系主任,这就是传递函数依赖
要消除表中一些不必要的依赖关系,则就需要对关系模式进行规范化,而规范化的过程实际上可以理解为模式分解,对于不同的规范化程度呢,我们可用范式来衡量。
范式是符合某一种级别的关系模式的集合,是衡量关系模式规范化程度的标准,达到的关系才是规范化的。
目前有6中范式:

  1. 第一范式(1NF):每个属性都是不可再分的
  2. 第二范式(2NF):不存在非主属性对主属性的部分函数依赖
  3. 第三范式(3NF):不存在非主属性对主码的传递函数依赖
  4. BC范式(BCNF):不存在任何属性完全函数依赖与非码的任一组属性
  5. 第四范式
  6. 第五范式
    一般来说,满足前三个范式,就已经很满意了
  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值