数据库——范式
需要提前理解的概念:
关系就是一张二维表
属性就是表中的字段
三大方式简要概括:
1NF: 字段是最小的的单元不可再分
2NF:满足1NF,表中的字段必须完全依赖于全部主键而非部分主键 (一般我们都会做到)
3NF:满足2NF,非主键外的所有字段必须互不依赖
4NF:满足3NF,消除表中的多值依赖
解释
1NF 第一范式就是无重复的列。例如,由“职工号”“姓名”“电话号码”组成的表(一个人可能有一部办公电话和一部移动电话),这时将其规范化为1NF可以将电话号码分为“办公电话”和“移动电话”两个属性,即职工(职工号,姓名,办公电话,移动电话)。
2NF 首先要满足第一范式,其次每一个非主属性要完全函数依赖于候选键,或者是主键。也就是说,每个非主属性是由整个主键函数决定的,而不能有主键的一部分来决定。
3NF 如果关系模型R是第二范式,且每个非主属性都不传递依赖于R的候选键,则称R是第三范式的模式。
以学生表(学号,姓名,课程号,成绩)为例,其中学生姓名无重名,所以该表有两个候选码(学号,课程号)和(姓名,课程号),故存在函数依赖:学号——>姓名,(学号,课程号)——>成绩,唯一的非主属性成绩对码不存在部分依赖,也不存在传递依赖,所以属性属于第三范式。
参考资料:https://blog.csdn.net/jtjljy/article/details/93504010
https://www.cnblogs.com/rosesmall/p/9585655.html
什么是三大范式:
第一范式:当关系模式R的所有属性都不能在分解为更基本的数据单位时,称R是满足第一范式的,简记为1NF。满足第一范式是关系模式规范化的最低要
求,否则,将有很多基本操作在这样的关系模式中实现不了。
第二范式:如果关系模式R满足第一范式,并且R得所有非主属性都完全依赖于R的每一个候选关键属性,称R满足第二范式,简记为2NF。
第三范式:设R是一个满足第一范式条件的关系模式,X是R的任意属性集,如果X非传递依赖于R的任意一个候选关键字,称R满足第三范式,简记为3NF.
注:关系实质上是一张二维表,其中每一行是一个元组,每一列是一个属性
原文地址:https://www.cnblogs.com/knowledgesea/p/3667395.html
通俗解释
1NF 属性(表中的字段)不可分割,比如学生信息组成学生信息表,有姓名、年龄、性别、学号等信息组成。姓名不可拆分,所以可以作为该表的一个字段,但是在国外,所以姓名字段是可拆分的,分为姓字段和名字段。
简单来说,一范式是关系数据库的基础,但字段是否真的不可拆分,根据你的设计目标而定。
原文地址:https://www.zhihu.com/question/24696366/answer/29049568
名字解释:
主属性——包含在任一候选关键字中的属性称主属性。
非主属性——不包含在主码中的属性称为非主属性。
非主属性是相对与主属性来定义的。
候选码——若关系中的某一属性组的值能唯一的标识一个元组,而其任何真子集都不能再标识,则称该属性组为候选码。
例如:在学生实体中,“学号”是能唯一的区分学生实体的属性,同时又假设“姓名”、“年龄”的属性组合足以区分学生实体,那么{学号}和{姓名,年龄}都是候选码
关键码——唯一可以决定整个关系的码就是关键码
在《数据库系统概论》(第五版)——王珊、萨师煊编著中:
1.候选码的定义:如果关系中的某一属性组的值能唯一地标识一个元组,则称该属性组为候选码;
2.主码的定义:如果一个关系有多个候选码,则选定其中一个为主码;
3.主属性定义:候选码的诸属性称为主属性;
4.非主属性定义:不包含在任何候选码中的属性称为非主属性;
5.实体完整性规则:如果属性(一个或者一组属性)A是基本关系R的主属性,则A不能取空值。
————————————————
原文链接:https://blog.csdn.net/must_5/article/details/90348037