数据库的三大范式以及举例

什么是范式

范式是符合某一种设计要求的总结
要想设计一个结构合理的关系型数据库,必须满足一定的范式

第一范式:列不可再分

1:每一列属性都是不可再分的属性值,确保每一列的原子性
2:两列的属性相近或相似或一样,尽量合并属性一样的列,确保不产生冗余数据
在这里插入图片描述

第二范式:属性完全依赖于主键

第二范式(2NF) 是在第一范式的基础上建立起来的,既满足第二范式必须先满足第一范式
第二范式(2NF) 要求数据库表中的每个实列或行必须可以被唯一区分,为实现区分通常需要为表加上一个列,以存储各个实列的唯一标识,这个唯一属性列被称为主键
在这里插入图片描述
这张表中,只有学号才能为主键,其余都是在描述这个主键

第三范式:属性不依赖于其他非主属性 属性直接依赖于主键

数据不能存在传递关系,即每个属性都跟主键有直接关系而不是间接关系

列如:
在这里插入图片描述
这个时候我们需要做三张表


在这里插入图片描述

总结

三大范式只是一般设计数据库的基本理论,可以建立冗余较小,结构合理的数据库。如果有特殊情况,当然要特殊对待,数据库设计最重要的是看需求跟性能,需求>性能>表结构。所以不能一味的去追求范式建立数据库

猜你喜欢

转载自blog.csdn.net/weixin_48190891/article/details/109049673