数据库范式

数据库范式详解

先来了解数据依赖,什么叫数据依赖呢

数据依赖是一个关系内部属性与属性之间的一种约束关系。这种约束关系是通过属性间值的相等与否体现出来的数据之间的一种联系。
举一个小例子就是在一个表a中有属性12345,1是主键可以决定推测出2345这种关系叫做数据依赖.
数据依赖分为函数依赖(FD)和多值依赖(MVD),这两种依赖可以去看一下我上一篇文章.

数据库不规范化可能带来的问题

  • 数据冗余
    比如,一个学校的关系表中会出现大量的系主任的名字和班级如果不规范化将带来数据冗余。
  • 更新异常
    由于数据冗余,当更新数据库中的数据时,系统要付出很大的代价来维护数据库的完整性,否则会面临数据不一致的危险。
  • 插入异常
    如果一个系刚刚成立,且没有学生,则无法把这个系和主任的信息存入数据库中
  • 删除异常
    如果一个系的学生全部毕业了,则在删除改系学生信息的同时,这个系和系主任的信息也全部丢失了

函数依赖的讲解

见上一篇文章主码主属性讲解。

范式的讲解和第一范式

范式:顾名思义就是将数据库规范化的形式
范式目前有最高的五范式也叫做5NF.一个低一级范式的关系模式通过模式分解可以转化为若干个高一级的范式的关系模式的集合
官方解释:1NF(范式):满足每一个属性不可再分就行。
博主主键的见解:比如我们常用来举例的学生表学生表有属性学号,性别,和年龄和班级。

第二范式的讲解

官方解释:2NF:确保表中的每一个非主键列都完全依赖与主键,而不是依赖与主键的一部分。
博主自己的见解:就是你已经确定的主键属性,比如说主键有学生的学号sno,课号cno,主键是sno和cno一起组成的,但是sno一个属性就可以决定一个表的所有属性这样就不满足第二范式。
一句话:在一个表中如果满足第一范式,且其他属性完全函数依赖主属性那么就是第二范式。

第三范式的讲解

官方解释:确保表中的每一个非主键列都不传递依赖给主键,及不存在非主键依赖与其他非主键。
博主解释:就是在一个表中不存主码推断其他属性要间接通过别的属性去决定,且不存在那个间接属性可以反方向推断主码,那么就叫三范式。
举一个例子:在一个学生表中我想知道学生选的课程的代课老师。那么我先要找到学号(当然学号是主码),通过学号找到课程名,通过课程名找到老师那么在这个表就不是第三范式

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值