1.1 范式简介
在关系型数据库中,关于数据表设计的基本原则、规则称为范式。要想设计一个结构合理的关系型数据库,必须满足一定的范式。
1.2 范式都包括哪些
目前关系型数据库里由六种常见范式,按照范式级别,从低到高分别是第一范式(1NF)、第二范式(2NF)、第三范式(3NF)、巴斯-科德范式(BCNF)、第四范式(4NF)和第五范式(5NF,又称完美范式)。
1.3 键和相关属性的概念
这里有两个表:
球员表(player)
:球员编号 | 姓名 | 身份证号 | 年龄 | 球队编号
球队表(team)
:球队编号 | 主教练 | 球队所在地
-
超键
:对于球员表来说,超键就是包括球员编号或者身份证号的任意组合,比如(球员编号)(球员编号,姓名)(身份证号,年龄)等。 -
候选键
:就是最小的超键,对于球员表来说,候选键就是(球员编号)或者(身份证号)。 -
主键
:我们自己选定,也就是从候选键中选择一个,比如(球员编号)。 -
外键
:球员表中的球队编号。 -
主属性
、非主属性
:在球员表中,主属性是(球员编号)(身份证号),其他的属性(姓名)(年龄)(球队编号)都是非主属性。
1.4 第一范式
第一范式主要是确保数据表中每个字段的值必须具有原子性,也就是说数据表中每个字段的值为不可再次拆分的最小数据单位。
1.5 第二范式
第二范式要求,在满足第一范式的基础上,还要满足数据表里的每一条数据记录,都是可唯一标识的。而且所有非主键字段,都必须完全依赖主键,不能只依赖主键的一部分。
1.6 第三范式
第三范式是在第二范式基础上,确保数据表中的每一个非主键字段都和主键字段直接相关,也就是说,要求数据表中的所有非主键字段不能依赖于其他非主键字段
1.7 小结
关于数据表的设计,前三个范式需要遵循。范式等级越高,设计出来的数据表就越多、越精细,数据的冗余度就越低,进行数据查询的时候就需要关联多张表,这不但代价昂贵,也可能使一些索引策略无效。范式只是提出了设计的标准,实际上设计表时,未必一定要符合这些标准。实际开发中通常根据需要从前三个范式中选择遵循。处于性能考虑,不使用后面的范式。其中第三范式通常被认为在性能、拓展性和数据完整性方面达到了最好的平衡。
笔记来自尚硅谷康师傅的MYSQL课程