关系数据库与SQL Server 2012(第3版)
上QQ阅读APP看书,第一时间看更新

1.3 关系数据模型

逻辑模型是按计算机系统的观点对数据建模,是对数据逻辑结构的描述,主要用于DBMS的实现。当前,主要的逻辑模型有关系模型、层次模型、网状模型和面向对象模型4种。

用二维表格结构表示实体以及实体之间联系的逻辑模型称为关系数据模型。关系数据模型在用户看来是一个二维表格,它概念单一,容易为初学者接受。关系数据模型以关系数学为理论基础,操作对象和操作结果都是二维表。关系数据模型是由数据库技术的奠基人之一E.F.Codd于1970年提出的。自20世纪80年代以来,计算机厂商推出的数据库管理系统几乎都支持关系数据模型,如FoxBase、FoxPro、SQL-Sever和Oracle等。

1.3.1 关系数据模型的基本概念

下面以表1-2描述学生信息的学生表和支持关系数据模型的SQL Server 2012为例,说明关系数据模型的基本概念。

表1-2 学生表

978-7-111-51590-6-Chapter01-8.jpg

1.关系(Relation)

一个关系就是一张二维表,每个关系都有一个关系名,即每个表都有一个表名。例如,表1-2所示的表的名称为学生表。

2.元组(Tuple)

二维表中的行称为元组,每一行是一个元组,元组对应存储文件中的一个记录。例如,学生表中包括3个元组。

3.属性和属性值(Attribute and Attribute Value)

二维表的列称为属性,每一列有一个属性名,且各属性不能重名。属性值是属性的具体值,属性对应存储文件中的一个字段。例如,学生表包括5个属性,属性名分别是学号、姓名、性别、年龄和系编号,其中的03001、马力刚、男、21、01是属性值。

4.域(Domain)

属性的取值范围称为域。例如,学生表中性别的取值范围只能是男和女。

5.关系模式(Relation Mode)

对关系的信息结构及语义限制的描述称为关系模式,用关系名和包含的属性名的集合以及关系的主键等表示。例如,学生表的关系模式:学生(学号,姓名,性别,年龄,系编号),其中学号是主键。

注意,关系模式和关系是彼此密切相关但又有区别的两个概念。关系模式是对关系结构的定义,是对关系“型”的描述。关系是二维表格,是对“型”和“值”的综合描述,“值”是指关系中的具体数据。一般说来,关系的“型”是相对稳定、不随时间变化的。而关系的“值”是随时间动态变化和不断更新的。例如,在学生表中,由于学生的入学、退学和毕业等原因,学生关系中的数据是经常变化的,但其结构以及对数据的限制是不会改变的。

6.键(Key)

键又称关键字或者码,由一个或几个属性组成,在实际使用中,有下列两种键。

候选键(Candidate Key):如果在一个关系中,存在多个属性(或属性组合)都能用来唯一标识该关系中的元组,这些属性(或属性组合)都称为该关系的候选键。例如,在学生表中,如果没有重名的元组,则学号和姓名都是学生表的候选键。一般情况,如不加说明,则键就是指候选键。

主键(Primary Key):用户选定的标识元组的一个候选键称为主键。例如,如果选择学号作为学生表中元组的标识,那么就称学号为主键。如果一个关系只有一个候选键,则该候选键即为主键。主键的值不能为空,即主键的值为空的元组是不允许存在的。

7.非主属性或非键属性(Non Primary Key)

在一个关系中,不组成键的属性称为该关系的非主属性或非键属性。例如,学生表中的性别、年龄和系编号是非主属性。

8.外键(Foreign Key)

一个关系的某个属性(或属性组合)虽不是该关系的键或只是键的一部分,但却是另一个关系的键,则称这样的属性为该关系的外键。外键是表与表联系的纽带。

例如,学生表中的系编号不是学生表的键,但它却是表1-3系表的键,因此系编号是学生表的外键。通过系编号可以使学生表与系表建立联系。

表1-3 系表

978-7-111-51590-6-Chapter01-9.jpg

9.主表和从表

主表和从表是指通过外键相关联的两个表。以外键作为键的表称为主表,外键所在的表称为从表。例如,系表是主表,学生表是从表。

尽管关系与二维表格类似,但它们又有重要的区别。我们不能把日常手工管理所用的各种表格,按照一张表一个关系直接存放到数据库里。关系数据库要求其中的关系必须是规范化的,即必须满足以下条件:

(1)每一个关系仅有一种记录类型,即只有一种关系模式。

(2)关系中的每个属性是不可分解的,即不能表中套表。例如,手工制表中,经常出现表1-4的复合表,这种表格不是二维表,不能直接作为关系,应对其进行调整。对于该复合表,只要把应发工资和应扣工资两个表项去掉就可以了。

表1-4 复合表

978-7-111-51590-6-Chapter01-10.jpg

(3)在同一个关系中,不能出现相同的属性名。

(4)在同一个关系中,不能出现完全相同的行。

(5)在一个关系中,元组的位置无关紧要。任意交换两行的位置并不影响数据的实际含义,即所谓排行不分先后。

(6)在一个关系中,列的次序无关紧要。任意交换两列的位置并不影响数据的实际含义。

1.3.2 E-R图转化为关系数据模型

将E-R图转化为关系数据模型,一般应遵从以下原则。

1.每个实体转换为一个关系

(1)实体的属性就是关系的属性。

(2)实体的码作为关系的键。

2.每个联系也转换成一个关系

(1)与关系相连的,各个实体的码、联系的属性转换成关系的属性。

(2)关系的键如下:

①对于1:1的联系,每个实体的码均是该联系关系的候选键。

②对于1:n的联系,关系的键是N端实体的码。

③对于m:n的联系,关系的键是诸实体码的组合。

3.有相同键的关系可以合并

根据以上原则,可将图1-5教学管理E-R模型转换成以下的关系表,为了简便起见,这里假设有3位教师、5名学生和2门课程。

(1)将教师实体转化为教师表(主键为教师号),见表1-5。

表1-5 教师表

978-7-111-51590-6-Chapter01-11.jpg

(2)将学生实体转化为学生表(主键为学号),见表1-6。

表1-6 学生表

978-7-111-51590-6-Chapter01-12.jpg

(3)将课程实体转化为课程表(主键为课程号),见表1-7。

表1-7 课程表

978-7-111-51590-6-Chapter01-13.jpg

(4)将选修联系转化为选修表(主键为学号+课程号,外键为学号、课程号),见表1-8。

(5)将讲授联系转化为讲授表(主键为教师号+课程号,外键为教师号、课程号),见表1-9。

表1-8 选修表

978-7-111-51590-6-Chapter01-14.jpg

表1-9 讲授表

978-7-111-51590-6-Chapter01-15.jpg

(6)将指导联系转化为指导表(主键为学号,外键为教师号),见表1-10。

表1-10 指导表

978-7-111-51590-6-Chapter01-16.jpg

在将E-R图转化为关系数据模型时,如果没有具体数据,可用关系模式来代替关系表。因此,教学管理系统的关系数据模型也可以用以下关系模式来描述。

教师表(教师号,姓名,性别,年龄,职称,专业)主键:教师号

学生表(学号,姓名,性别,年龄,籍贯,专业)主键:学号

课程表(课程号,课程名,学时数,学分,教材)主键:课程号

选修表(学号,课程号,成绩)主键:学号+课程号

外键:学号、课程号

讲授表(教师号,课程号)主键:教师号+课程号

外键:教师号、课程号

指导表(学号,教师号,时间,地点)主键:学号

外键:教师号

说明:学生表和指导表可以根据实际情况进行合并。

通过将E-R图转化为关系数据模型,实现了信息世界到机器世界的第二次抽象。

【课堂练习3某个企业集团有若干工厂,每个工厂生产多种产品,且每一种产品可以在多个工厂生产,每个工厂按照固定的计划数量生产产品;每个工厂聘用多名职工,且每名职工只能在一个工厂工作,工厂聘用职工有聘用期和工资。工厂的属性有工厂编号、厂名、地址,产品属性有产品编号、产品名、规格,职工的属性有职工号、姓名。

(1)根据上述语义画出E-R图。

(2)将E-R模型转换成关系模型,并指出每个关系模式的主键和外键。