数据库候选关键词怎么求_数据库系统-规范化理论-笔记

规范化理论研究的是关系模式中各属性之间的依赖关系及其对关系模式性能的影响。关系数据库理论的核心是数据间的函数依赖,衡量的标准是关系规范化的程度及分解的无所连接和保持函数依赖性。

一、函数依赖

1、函数依赖:某个属性集决定另一个属性集时,称另一属性集依赖于该属性集。函数依赖是一种最重要,最基本的数据依赖。

2、设R(U)是属性U上的一个关系模式,X和Y是U的子集,r为R的任一关系,如果对于R中的任意两个元组u,v,只要有u[X]=v[X],就有u[Y]=v[Y],则称X函数决定Y,或称Y函数依赖于X,记为X→Y。

3、

数据库候选关键词怎么求_数据库系统-规范化理论-笔记_第1张图片

A部分函数依赖:如学号+课程号可以确定姓名。主键的一部分能确定某个属性

B传递函数依赖:当A确定B,B确定C,说明A可以确定C。B不能确定A,否则A=B。不符合传递函数依赖。

二、价值与用途

规范化理论正是用来改造关系模式,通过分解关系模式来消除其中不合适的数据依赖,以解决插入异常、删除异常、更新异常和数据冗余问题。

非规范化的关系模式,可能存在的问题包括:数据冗余,更新异常,插入异常,删除异常

数据库候选关键词怎么求_数据库系统-规范化理论-笔记_第2张图片

1、数据冗余:指数据之间的重复,也可以说是同一数据存储在不同数据文件中的现象。

如表中的DId与Dname和Location属性是重复的属性。Dname与Location可以根据DId确定的。

2、更新异常:如图,在数据冗余的情况下。只更新了DId,未更新Dname或LOCATION属性。

三、键

1. 超键:在关系中能唯一标识元组的属性集。一个属性可以为作为一个超键,多个属性组合在一起也可以作为一个超键。(多个属性组合可能存在冗余属性)

2. 候选键:某个关系变量的一组属性所组成的集合(可以有多个候选键),它需要同时满足下列两个条件:

ü 这个属性集合始终能够确保在关系中能唯一标识元组。

ü 在这个属性集合中找不出合适的真子集能够满足条件。

3. 主键(主关键字):在候选键中挑选出来的作为表唯一标识的候选关键字。一个表只有一个主键。主键可以由一个字段,也可以由多个字段组成,分别称为单字段主键或多字段主键

4. 外键:是表示了两个关系之间的相关联系。以另一个关系的外键作主关键字的表被称为主表,具有此外键的表被称为主表的从表。

四、求候选键

1、将关系模式的函数依赖关系用“有向图”的方式表示

2、 找到入度为0的属性,并以该属性集合为起点,尝试遍历有向图,若能正常遍历图中所有结点,则该属性集即为为关系模式的候选键

3、若入度为0的属性集不能遍历图中所有结点,则需要尝试性的将一些中间结点(即有入度,也有出度的结点)并入度为0的属性集中,直至该集合能遍历所有结点,集合为候选键

函数依赖集F={A1→A2,A3→A3,A2→A3,A2→A4}

1、“有向图”如下图。用箭头值

2、如A1无任何属性依赖的属性称为入度为0的属性。反之为出度为0的属性

数据库候选关键词怎么求_数据库系统-规范化理论-笔记_第3张图片

五、范式

1. 第一范式(1NF):在关系模式R中,当且仅当所有域只包含原子值,即每个分量都是不可再分的数据项,则称R是第一范式。包括整型、实数、字符型、逻辑型、日期型等。

如下表,该表并不属于第一范式,当去除高级职称人数时,就属于第一范式

10fde0b20c3694160b4a678082d10353.png

2. 第二范式(2NF):当且仅当R是1NF,且每个非主属性完全依赖主键(不存在部分依赖)是,则称R是第二范式。数据库表中不存在非主属性对任一主属性的部分函数依赖(部分函数依赖指的是存在组合关键字中的某些字段决定非主属性的情况),也即所有非主属性都完全依赖于任意一组主属性。

如果不符合2NF,即存在组合关键字中的字段决定非关键字的情况。则存在数据冗余,更新异常,插入异常,删除异常等问题

如关系表R(学号,课程号,姓名,成绩,学分),关键字为组合关键字(学号,课程号)。存在如下关系:

(学号,课程号)→(姓名,成绩,学分)

该表不符合2NF是因为如下关系,即存在组合关键字中的字段决定非关键字的情况

(课程号)→(学分)

(学号)→(姓名)

把选课关系表SelectCourse改为如下三个表:

学生:Student(学号,姓名);

课程:Course(课程号,学分);

选课关系:SelectCourse(学号,课程名称,成绩)。

这样的数据库表是符合第二范式的, 消除了数据冗余、更新异常、插入异常 和删 除异常。另外,所有单关键字的数据库表都符合第二范式,因为不可能 存在组合关 键字。

3. 第三范式(3NF):当且仅当R是2NF,且E中没有非主属性传递依赖于码时,则称R是第三范式。数据表中如果不存在非主属性对任一主属性的传递函数依赖则符合第三范式

关系表为Student(学号,姓名,年龄,所在学院,学院地点,学院电话),关键字为单一关键字"学号",因为存在如下决定关系:

(学号) → (姓名,年龄,所在学院,学院地点,学院电话)

这个数据库是符合2NF的,但是不符合3NF,因为存在如下决定关系:

(学号) → (所在学院) → (学院地点,学院电话)

即存在非关键字段"学院地点"、"学院电话"对关键字段"学号"的传递函数依赖。

它也会存在数据冗余、更新异常、插入异常和删除异常的情况,读者可自行分析得知。

把学生关系表分为如下两个表:

学生:(学号,姓名,年龄,所在学院);

学院:(学院,地点,电话)。

这样的数据库表是符合第三范式的,消除了数据冗余、更新异常、插入异常和删除异常。

4. 鲍依斯-科得范式(BCNF):数据库表中如果不存在任何字段对任一主属性的传递函数依赖则符合BC范式。设R是一个关系模式,F是它的依赖集,R属于BCNF当且仅当其F中每个依赖的决定因素必定包含R的某个候选码。

仓库管理关系表为StorehouseManage(仓库ID,存储物品ID,管理员ID,数量),且有一个管理员只在一个仓库工作,一个仓库可以存储多种物品。这个数据库表中存在如下决定关系:

(仓库ID,存储物品ID) →(管理员ID,数量)

(管理员ID,存储物品ID) → (仓库ID,数量)

所以(仓库ID,存储物品ID)和(管理员ID,存储物品ID)都是StorehouseManage的候选关键字,表中的唯一非关键字段为数量,它是符合第三范式的。但是,由于存在如下决定关系:

(仓库ID) → (管理员ID)

(管理员ID) → (仓库ID)

即存在关键字段决定关键字段的情况,所以其不符合BCNF范式

5. 第四范式(4NF):关系模式R∈1NF,如果对于R对于R的每个非平凡多值依赖X→→Y(Y不属于X),X都含有候选码,则R∈4NF。4NF就是限制关系模式的属性之间不允许有非平凡且非函数依赖的多值依赖。显然一个关系模式是4NF,则必为BCNF。

6. 第五范式(5NF): 是最终范式,消除了4NF中的连接依赖。

7. DK范式(DKNF): 在值域上定义上的范式。

8. 第六范式(6NF):目前关系型数据库最高范式。所有第六范式的关系同时满足第5范式与DK范式。

数据库候选关键词怎么求_数据库系统-规范化理论-笔记_第4张图片

如上图所示,简而言之,当1NF消除了非主属性对候选键的部分依赖时,就达到了2NF。当2NF消除了非主属性对或选举的传递依赖时,就达到了3NF。当3NF消除了主属性对候选键的传递依赖时。就达到了BCNF

六、模式分解

如果某关系存在存储异常问题,则可通过分解该关系模式来解决问题。把一个关系模式分解成几个子关系模式,需要考虑的是该分解是否保持函数依赖,是否是无损联接。

保持函数依赖:分解之前有哪些函数依赖,分解后这些依赖还是存在。 如R(A,B,C),其中A→B,B→C。将R拆分成R1(A,B),R2(B,C)。在R1,R2中都保持了R中的函数依赖。

无损分解:有损,不能还原。无损,可以还原。

无损联接分解:指将一个关系模式分解成若干个关系模式后,通过自然联接和投影等运算仍能还原到原理的关系模式。

以下为无损联接分解判定定理(只适用于一分为二)

数据库候选关键词怎么求_数据库系统-规范化理论-笔记_第5张图片

你可能感兴趣的:(数据库候选关键词怎么求)