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

项目1.3 设计关系数据模型

2 设计关系数据模型

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

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

任务1.3.1 掌握关系数据模型的基本概念

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

1.关系

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

表1-2 学生表

2.元组

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

3.属性和属性值

二维表的列称为属性,每一列有一个属性名,且各属性不能重名。属性值是属性的具体值。属性对应存储文件中的一个字段。例如,学生表包含7个属性,属性名分别是学号、姓名、性别、年龄、籍贯、专业和学院编号,其中,“2020003001”“张国庆”“男”“20”“重庆”“物联网工程”“01”是属性值。

4.域

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

5.关系模式

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

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

6.键

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

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

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

7.非主属性或非键属性

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

8.外键

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

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

表1-3 学院表

9.主表和从表

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

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

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

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

表1-4 复合表

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

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

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

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

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

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

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

在进行转换时要注意两点:实体的属性就是关系的属性;实体的键作为关系的键。

下面以转换如图1-5所示的教学管理E-R图为例进行讲解。为简便起见,这里假设有3位教师、5名学生和3门课程。该E-R图中有教师、学生、课程三个实体,因此可转换为三个关系表:教师表(主键为教工号)、学生表(主键为学号)、课程表(主键为课程号),分别如表1-5~表1-7所示。

表1-5 教师表

表1-6 学生表

表1-7 课程表

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

在进行转换时,要注意以下方面。

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

2)根据联系的类型不同,关系的键规定如下。

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

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

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

在如图1-5所示的教学管理E-R图中,有选修、讲授、指导三个联系,因此可转换为三个关系表:选修表(主键为学号+课程号,外键为学号、课程号)、讲授表(主键为教工号+课程号,外键为教工号、课程号)、指导表(主键为学号,外键为教工号),分别如表1-8~表1-10所示。

表1-8 选修表

表1-9 讲授表

表1-10 指导表

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

由于学生表和指导表的键都是学号,因此,这两张表可以根据实际情况进行合并。

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

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

【课堂实践3】

1)根据前面内容的描述,将聘用、录取、开课三个联系用关系模式来表示,并分别指出它们的主键和外键。

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

①根据上述语义绘制E-R图。

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