【数据库之三大范式三大完整性】

一、数据库之三大范式?

第一范式:强调的是列的原子性,也就是数据项不可分。同一列中不能有多个值,即实体中的某个属性不能有多个值或者不能有重复的属性。

第二范式:在满足第一范式的基础上,实体的每个非主键属性完全依赖于主键属性(消除部分依赖)。
依赖:对于X的每个值,Y都有一个值与之对应
如下图:工号决定人的姓名,姓名依赖工号;而姓名可以重名,所以姓名决定不了工号;也就是工号对姓名时一对一,姓名对工号是一对多。所以姓名做不了主键。
在这里插入图片描述
部分依赖:当主键由两个或两个以上字段构成,而表中的某些信息通过主键的一个字段就能唯一确定,我们称这样的依赖关系为部分依赖
如下图:表中的姓名、专业通过主键中的学号就能唯一确定,而课程名通过课程号唯一确定,这就是部分依赖,这样的设计不符合第二范式。
在这里插入图片描述
解决部分依赖:用关系分解的方法消除部分依赖,将上表改成如下三张表:
在这里插入图片描述
在这里插入图片描述

第三范式:在第二范式的基础之上,在实体中不存在非主属性传递依赖于主键。
传递依赖:A依赖于B,B依赖于C,就可以说A依赖C。
如下图:有着系名->系号,系号->学号,那么间接的就可以系名->学号,宿舍号、宿舍电话和学号之间也有同样的关系。这样设计表的同样会带来数据冗余,操作异常等问题
在这里插入图片描述
消除传递依赖:用关系分解的方法消除传递依赖

二、数据库之三大完整性?

数据完整性指的是存储在数据库中的数据的一致性和准确性。
1.实体完整性:主键值必须唯一且非空。(主键约束:primary key)
2.参照完整性:外键要么为空;要么引用主表中存在的记录。(外键约束:foregin key(列) references 主表名(列)
3.用户自定义完整性:针对某一详细关系数据库中的约束条件。(自定义约束:not null,unique,check()限制列中的值的范围等)

面试题值得一看1

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

骑着蜗牛追汤圆

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值