看就懂的数据库三大范式的基本概念

数据库的三大范式:

第一范式:

表中所有字段都是不可分割的原子值。只要字段值还可以继续拆分,就不满足第一范式。例如地址这个字段,如果写为XX省XX市XX区就不满足第一范式,因为这个字段可以继续拆分为字段省,字段市,字段区。在实际数据处理过程中,范式设计越详细,操作更加灵活。
如表1
学生信息表1

学生学号 学生姓名 性别 家庭住址

其中家庭住址的范围较广,可以继续拆分为表2
学生信息表2

学生学号 学生姓名 性别 家庭住址(省) 家庭住址(市) 家庭住址(区)

这样在执行查询语句的时候,条件限制更为具体(当然,区往后还可以继续再分,根据实际要求看)。

第二范式:

在满足了第一范式的条件下,要求除了主键外的每一个列都必须完全依赖主键。例如表3
学生信息表3

学生姓名 学生性别 学生身份证号 紧急联系人 所属关系 职务 所在公司

其中学生性别、学生身份证号、紧急联系人、所属关系都是依赖于学生本身的,而职务、所在公司与学生本身是没有依赖关系的,所以这张表应该分为两张表:
表4
学生信息表4

学生姓名 学生性别 学生身份证号 紧急联系人 所属关系

表5
联系人信息表

紧急联系人 职务 所在公司

第三范式:

必须先满足第二范式,并且除开主键列的其他列之间不能存在传递依赖关系。
这里的传递依赖用一个简单的例子说明:
如表6
学生信息表6

学生学号 系编号 系主任

通过学生学号可以查询其所在的系编号,通过系编号可以查询到系主任,但是由系编号是决定不了具体的一个学生的,所以说系主任和学生学号之间存在传递依赖,换句话说系主任是依赖于系编号的,但是表中的学生学号才是主键系主任却不能完全依赖于学生学号。所以要将系主任置于另一张以系编号为主键的信息表中。

猜你喜欢

转载自blog.csdn.net/weixin_44147632/article/details/107299360