数据库基本概念

数据库范式

范式为了设计合适的数据模型,消除数据冗余.;消除更新异常;消除插入异常 ;消除删除异常.

https://blog.csdn.net/whoamiyang/article/details/51832918
第一范式:无重复的属性(列)
实体中的某个属性不能有多个值
例如一张学生表Student(stuNo,stuName,age,age,sex)是不符合第一范式的,因为有重复列age属性。去除重复列age以后的Student(stuNo,stuName,age,sex)是符合第一范式的。

第二范式:属性完全依赖主键(唯一属性列)
满足第二范式必须满足第一范式,不存在仅依赖主关键字一部分的属性。
例如 score依赖于学号和课程分数->分成三个表
数据库基本概念_第1张图片
数据库基本概念_第2张图片

第三范式:属性不依赖于其它非主属性(消除传递依赖)
第三范式(3NF)要求一个数据库表中不包含已在其它表中已包含的非主关键字信息
例如dept_name,dept_info这两个属性也可以由dept_id这个非主属性决定->分成两个表
数据库基本概念_第3张图片
数据库基本概念_第4张图片

BC范式(BCNF):所有主属性对每一个不包含它的主属性都是完全函数依赖
例如(仓库ID,存储物品ID,管理员ID,数量).
这个数据库表存在如下决定关系:
(仓库ID,存储物品ID)—->(管理员ID,数量)
(管理员ID,存储物品ID)—>(仓库ID,数量)
主属性:仓库ID,存储物品ID,管理员ID. 非主属性:数量.
(管理员ID,存储物品ID)—->(仓库ID);看这个关系,三个属性都是主属性,但是(管理员ID就能唯一确定仓库ID),所以仓库ID对(管理员ID,存储物品ID)存在部分函数依赖. 因此分解表得到:
仓库:(仓库ID,管理员ID);
物品:(仓库ID,存储物品ID,数量);

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