今天复习了一下数据库的三范式,如有不对,请多指教哦

第一范式:

属性不可重复
表中任何一列都不是重复的,一行数据表示一个实体,
如果有重复的,那就把重复的属性拿出来,单独做一个实体
显然,数据库都是满足第一范式的

第二范式:

所有非主属性完全函数依赖候选键(一组候选键可以唯一标识一行)
对于只有一个主键的表是符合第二范式的
像这样的表是不符合第二范式的:
(学号,课程名称)----> (学生姓名,年龄,课程学分)
由于(课程名称)---->(课程学分),且(学号)----> (学生姓名,年龄)所以并不符合第二范式
解决:分为两个表
(学号)----> (学生姓名,年龄)
(课程名称)---->(课程学分

第三范式:

不存在传递关系
比如表(学号)---->(姓名,年龄,所在学院,学院地址,学院电话)就不符合第三范式
因为表中存在传递关系:
(学号)---> (所在学院)---> (学院地址,学院电话)存在非关键字段学院地址。电话对关键字段的传递
解决:
(学号)--->(姓名,年龄,所在学院)
(所在学院)--->(学院地址,学院电话)

第四范式:

是对第三范式的改进
比如:
	现在有一个例子:一个管理员只管理一个仓库,一个仓库存储多种物品
	(仓库id)--->(管理员id,存储物品id)
	(管理员id)--->(管理员数量)
也就是说存在关键字段决定关键字段的情况,就不符合第四范式

你可能感兴趣的:(今天复习了一下数据库的三范式,如有不对,请多指教哦)