一、数据库基本概念
要理解范式,首先必须对知道什么是关系数据库,简单的说:关系数据库就是用二维表来保存数据。表和表之间可以……(省略10W字),如果对数据库很熟悉,可以不用理会下面的概念。
实体:现实世界中客观存在并可以被区别的事物。比如“一个学生”、“一本书”、“一门课”等等。值得强调的是这里所说的“事物”不仅仅是看得见摸得着的“东西”,它也可以是虚拟的,不如说“老师与学校的关系”。
属性:教科书上解释为:“实体所具有的某一特性”,由此可见,属性一开始是个逻辑概念,比如说,“性别”是“人”的一个属性。在关系数据库中,属性又是个物理概念,属性可以看作是“表的一列”。
元组:表中的一行就是一个元组。
分量:元组的某个属性值。在一个关系数据库中,它是一个操作原子,即关系数据库在做任何操作的时候,属性是“不可分的”。否则就不是关系数据库了。
码:表中可以唯一确定一个元组的某个属性(或者属性组),如果这样的码有不止一个,那么大家都叫 候选码,我们从候选码中挑一个出来做老大,它就叫主码。
全码:如果一个码包含了所有的属性,这个码就是全码。
主属性:一个属性只要在任何一个候选码中出现过,这个属性就是主属性。
非主属性:与上面相反,没有在任何候选码中出现过,这个属性就是非主属性。
外码:一个属性(或属性组),它不是码,但是它别的表的码,它就是外码。
候选码: 若关系中的某一属性或属性组的值能唯一的标识一个元组,而其任何真子集都不能再标识,则称该属性组为(超级码)候选码。
二、简介
设计关系数据库时,遵从不同的规范要求,设计出合理的关系型数据库,这些不同的规范要求被称为不同的范式,各种范式呈递次规范,越高的范式数据库冗余越小。 按照“数据库规范化”对表进行设计,其目的就是减少数据库中的数据冗余,以增加数据的一致性。
1、常见范式:1NF、2NF、3NF、BCNF、4NF、5NF
1.1 1NF 第一范式
数据库表的每一列都是不可分割的原子数据项,而不能是集合、数组、记录等非原子数据项,即实体中的某个属性有多个值时,必须分为不同的属性。简而言之,第一范式就是无重复性。关系型数据库设计的基本要求。
例:客户电话信息表,客户号、电话号码组成(一个人可能有2部电话),按第一范式将电话号码分为“第一电话”、“第二电话”两个属性。
1.2 2NF 第二范式
第二范式(2NF)是在第一范式(1NF)的基础上建立的,即满足第二范式(2NF)必须先满足第一范式(1NF)。第二范式(2NF)要求数据库表中的每个实例或记录必须可以被唯一地区分,选取一个能区分每个实体的属性和属性组,作为实体的唯一标识。第二范式(2NF)要求实体的属性完全依赖于主关键字,所谓完全依赖是指不能存在仅依赖关键字一部分的属性。
例:在选课关系表(学号、课程号、成绩、学分),关键字为组合关键字(学号,课程号),但由于非主属性学分仅依赖于课程号,对关键字(学号、课程号)只是部分依赖,而不是完全依赖,因此此种方式会导致数据冗余以及更新异常等
问题,解决办法是将其分为两个关系模式:学生表(学号、课程号、学分)和课程表(课程号、学分),新关系通过学生表
中外关键字课程号联系,在需要时进行连接。
1.3 3NF 第三范式
在第二范式(2NF)基础上,任何非主属性不依赖于其他非主属性(在2NF基础上消除传递依赖),第三范式(3NF)要求一个关系中不包含已在其它关系已包含的非主关键字信息
例:存在一个部门信息表,其中每个部门有部门编号(dept_id)、部门名称、部门简介等信息。那么在员工信息表中列出部门编号后就不能再将部门名称、部门简介等与部门有关的信息再加入员工信息表中。如果不存在部门信息表,则根据第三范式(3NF)也应该构建它,否则就会有大量的数据冗余
1.4 BCNF 巴斯-科德范式
在3NF基础上,任何非主属性不能对主键子集依赖(在3NF基础上消除对主码子集的依赖)
例:仓库管理关系表(仓库号,存储物品号,管理员号,数量),满足一个管理员只在一个仓库工作;一个仓库可以存储多种物品,则存在如下关系:
(仓库号,存储物品号)——>(管理员号,数量)
(管理员号,存储物品号)——>(仓库号,数量)
所以,(仓库号,存储物品号)和(管理员号,存储物品号)都是仓库管理关系表的候选码,表中唯一非关键字段为数量,它是符合第三范式的。但是,由于存在如下决定关系:
(仓库号)——>(管理员号)
(管理员号)——>(仓库号)
即存在关键字段决定关键字段的情况,因此其不符合BCNF。把仓库管理关系表分解为两个关系表仓库管理表(仓库号,管理员号)和仓库表(仓库号,存储物品号,数量),这样这个数据库表是符合BCNF的,并消除了删除异常、插入异常和更新异常。
1.5 4NF 第四范式
设R是一个关系模型,D是R上的多值依赖集合。如果D中存在凡多值依赖X->Y时,X必是R的超键,那么称R是第四范式的模式。
例:职工表(职工编号,职工孩子姓名,职工选修课程),在这个表中,同一个职工可能会有多个职工孩子姓名,同样,同一个职工也可能会有多个职工选修课程,即这里存在着多值事实,不符合第四范式。如果要符合第四范式,只需要将上表分为两个表,使它们只有一个多值事实,例如职工表一(职工编号,职工孩子姓名),职工表二(职工编号,职工选修课程),两个表都只有一个多值事实,所以符合第四范式。
1.6 5NF 第五范式
从最终结构重新建立原始结构。
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/26790018/viewspace-2157599/
,如需转载,请注明出处,否则将追究法律责任。