【软考】-数据库

先上图一张:

【软考】-数据库



概念:

超键:在关系中能唯一标识元组的属性集

候选键:能唯一标识元组,且不含多余属性(也可理解为不含多余属性的超键)

主键:被选作元组标识的候选键

主属性:候选键中的属性称为主属性

非主属性:非候选键中的属性成为非主属性


举例;

光看概念很抽象,通过例子来看就会变得明了,比如一个学生(学号,身份证号,姓名,性别,年龄,专业)

学号唯一,是一个超键;

身份证号唯一,是一个超键;

(学号,姓名)唯一,是一个超键;

(学号,姓名,性别)唯一,是一个超键;

(学号,姓名,性别,年龄)唯一,是一个超键

-------这里可以看出,超键有很多唯一组合,但是可能不是最小唯一


学号唯一,而且没有多余属性,是一个候选键;

身份证号唯一,而且没有多余属性,是一个候选键;

-------这里可以看出,候选键是没有多余属性的超键


主键是选中的超键,我们可以选择学号,也可以选择身份证号。


三范式

1NF

 概念:关系(表)中的每个关系都是原子值,不可再分

例如:

【软考】-数据库

在上表中,高级职称人数不是基本数据项,他可以分为教授和副教授两个基本数据项,我们只要把这两个基本数据项拆开就满足第一范式了,如下:

【软考】-数据库


2NF

概念:在第一范式基础上,每一个非主属性完全依赖主键

例如:选课关系(学号,课程号,成绩,学分);组合键(学号,课程号)为主键;每个属性都是原子值,所以肯定是1NF;

但是关系中非主属性成绩仅函数依赖于课程号,也就是学分部分依赖于主键,而不是完全依赖。

我们需要把选课关系分为两个关系模式,选课关系(学号,课程号,成绩);学分(课程号,学分);这样,每个关系就不存在非主属性部分依赖与主键了。


3NF

概念:在第二范式的基础上,无非主属性对码的传递函数依赖

例如:学生(学号,姓名,所在系,系名称,系地址)。关键字学号决定各个属性。由于是单个关键字,没有部分依赖的问题,肯定是2NF。

但关系中存在传递依赖,学号→所在系,所在系→系地址。因此关键字学号对系地址是通过传递依赖实现的,也就是说,学号不是直接决定非主属性系地址。

将关系分为两个关系学生(学号,姓名,所在系);系(所在系,系名称,系地址),这样,每个关系中就不存在传递依赖了。