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

文章目录

    • 一、数据库之三大范式?
    • 二、数据库之三大完整性?

一、数据库之三大范式?

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

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

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

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

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

面试题值得一看1

你可能感兴趣的:(数据库)