购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

2.1 关系模型概述

【案例2-1】 关系模型的应用最广泛 。关系数据库系统主要以关系数据库管理系统(RDBMS)为核心,统一管理及控制各种业务数据的处理与共享。关系数据库在实际业务中的应用非常广泛,极大地推动了经济、商贸、金融、交通、运输、物流、教育和办公等各领域或行业的各种大量业务数据的处理。

微课视频

课程视频2.1

2.1.1 关系模型的基本概念

关系数据库的数据结构简单、直观,可用二维表表示现实世界中的实体(事物)及其之间的联系。

1.关系及关系模型相关概念

为了便于更好地掌握数据库技术,下面概要介绍常用的基本概念。

1)关系。 关系 是一个二维表(简称为 ),表示数据的逻辑结构,将现实世界中的实体及其联系归结为简单的二维关系,其中,表中的一行代表一条 记录(元组) ,每列代表一个 属性 。一般 形式定义 R D 1 D 2 ,…, D n ),表示 D 1 × D 2 ×…× D n 的子集域 D 1 D 2 ,…, D n 上的关系,其中 R 表示 关系名 n 是关系的列(或目)数。

2)记录和属性。在关系模型中,二维表中的行称为 记录 (或 元组 )。二维表的列称为 属性 。每个属性对应表中的一个字段,属性名即字段名,属性值为其字段值。

3)域。 域(Domain) 是一组具有相同数据类型值的集合,用于表示属性的取值范围。属性 A 的域用 DOM A 表示。每个属性对应一个域,不同的属性可以具有相同的域。

【案例2-2】 不同域的应用示例。 D 1 ={百分制成绩 X ,1≤ X ≤100},表示百分制成绩的集合。 D 2 ={男,女},表示性别集合。 D 3 ={企业职工},表示企业18~60岁的在职员工(特殊情况、延迟退休等除外)的集合。

4)关系模型。 关系模型(Relation Model) 是以关系(表结构)表示的模型,可用键(或称 主属性 )唯一标识记录。键可以是单一属性或属性组。

关系模型的组成 包括关系数据结构、关系操作和关系完整性约束。关系模型是关系数据库的构建基础,所有关系数据库都支持关系模型。关系模型中,无论实体还是之间的联系,均为二维表结构,每个关系对应一个二维表。例如,学生可用学生关系表示。

【案例2-3】 高校学生数据表 。高校学生数据表包含的主要信息为学号、姓名、性别、专业、出生日期和家庭地址。表头表示 关系型 ,从第二行开始的以下各行都是这个关系型的 实例(记录) ,如表2-1所示。

表2-1 高校学生数据表

5)元数和基数。 元数 指关系(数据表)中属性(列)的个数。 基数 指记录(行)的个数。表2-1所示关系的元数和基数分别为6和5。

2.超键、候选键、主键和外键

1) 超键 。是指在关系模式中,能唯一标识记录(元组)的属性组,如(学号,姓名)。

2) 候选键 。是指没有多余属性的超键,如学号、工号、订单号。

3) 主键 。是指在关系中选取的候选键之一,主键不能为空值。如学生(学号,姓名,专业)的主键可以选“学号”,也可以选(学号,姓名)。

4) 外键 。若在关系 R 中包含另一个关系 S 的主键所对应的属性组 K ,则称 K R 的外键 。如对于选课(学号,课程号,成绩),“学号”就是“选课”关系的外键。

注意: 外键是指另一个关系的主键。在多表调用数据时,需要多表之间借助主键和外键建立关联,实现记录之间的一一对应(避免出错)。

关系模型中,主键和外键为现实世界中实体之间的联系建立了桥梁。基本关系 R 称为 参照关系 ,基本关系 S 称为 被参照关系 目标关系

特别理解

关系与关系中的主键和外键

2.1.2 关系的类型和性质

关系有三种类型 :基本关系(或称基本表或表)、查询表和视图表。 基本表 是实际存在的(存储)表。 查询表 是查询结果对应的表(常为部分数据)。 视图表 是由表或其他视图表导出的虚表,不对应实际存储的数据。

关系(表)具有六条基本性质 如下。

知识拓展

关系具有的6条基本性质

1)关系中的属性(列)是同质的,即每一列中的属性值(数据项)是同一种类型,即要求同列同类同域。

2)关系中的属性(列)是原子的,每个属性(列)不可再分。

3)任何两行(记录)都不能完全相同,以免造成不一致或错误等问题,应保证实体的唯一性和完整性。例如,客户一次存款只能有一条记录。

4)任何两列都不能同名。不同的列可以来自同一域,即 列值 类型可以相同。

5)关系中的行(记录)不分先后顺序,任意两行记录的次序可以交换。

6)关系中的属性(列)不分先后顺序,即属性(列)的次序可以任意交换。

【案例2-4】 高校学生不规范数据表 。高校学生数据表包括以下数据项:学号、姓名、性别、专业、出生日期(年、月、日)和家庭地址。表头表示关系型,从第二行开始的以下各行都是一个关系型的实例,如表2-2所示。

表2-2 学生数据表

此例中,属性“出生日期”再分为年、月、日三部分(不是原子的),导致属性“出生日期”不符合关系基本性质,是一种不规范关系,直接影响数据处理。

2.1.3 关系模式的表示

关系模式(Relation Schema) 是对关系结构和特征的描述, 可形式化地表示 R U D DOM F )。其中, R 为关系名, U 为组成该关系的属性(列)名集合, D 为属性组 U 中属性取值的域, DOM 为属性域的映象集合, F 为属性之间数据的依赖关系集合。

关系模式可以 简记为 R U )或 R A 1 A 2 ,…, A n ),其中 R 为关系名, A 1 A 2 ,…, A n 为属性名。例如,学生关系的关系模式可表示为:

关系模式主要描述以下两方面的内容。

特别理解

关系数据库中的型与值

1)关系模式指明关系(表)的结构(型),即构成的属性(列)及其域(常为属性的数据类型和长度等),以及属性与域之间的映射(对应)关系。

2)关系模式应确定属性间的相互关联关系和属性本身的约束条件。属性间的相互关联关系表现为一个表的主键同外键对应。

2.1.4 由E-R图向关系模型的转换

1.转换规则

E-R图的组成三要素 包括实体、实体的属性和实体间的联系,而关系模型是用二维表表示现实世界中实体之间的联系,即关系模式集合,所以将E-R图转换为关系模型(表),就是将E-R图转换成关系的过程。 实体和联系类型的转换规则 如下。

1)实体转换关系规则。将一个实体转换成一个关系时,实体的属性就是关系的属性,实体的标识符就是关系的键,例如,案例2-3中学生的学号为关系的键。

2)二元联系类型的转换规则。①若实体间的联系为一对一,则将两个实体类型转换成两个关系模式的过程中,任选一个属性(组),在其中加入另一个关系模式的键和联系类型的属性。②若实体间的联系为一对多,则在“多”的一端实体的关系中,加上“一”的一端实体的键和联系的属性。③若实体间的联系为多对多,则将联系也转换为关系,其属性为两端实体的键加上联系的属性,而键为两端实体键的组合。

2.转换方法

对于一对一(1:1)、一对多(1: n )和多对多( m : n )三种情况的两个实体(事物)联系转换为关系(二维表)的方法,可以通过应用实例分别概述。

【案例2-5】 学生和身份证之间的关系为一对一联系 。学生与身份证实体的关系如图2-1所示。在学生端加入身份证号作为联系属性,在两者之间建立一对一联系。

图2-1 学生和身份证一对一联系

在学生(学号,身份证号,姓名,性别,专业,出生日期,家庭地址)中,学号为主键(PK),身份证号为外键(FK)并关联到关系身份证。

身份证(身份证号,签发机关,有效期始,有效期止),身份证号为主键。

(1)一对一联系的转换方法

知识拓展

数据表与属性的命名规范

(2)一对多联系的转换方法

【方法一】 :可以将联系与“多”的一端实体所对应的关系合并,并加“一”端实体的主键和联系的属性,组成新的关系(表)的属性(列)。

【方法二】 :可以将联系转换为一个独立关系模式,其属性包含联系自身的属性以及相连接的两端实体的主键,组成新的关系(表)的属性(列)。

【案例2-6】 商品订单和订单项之间的一对多关系。 每一个商品订单都包含一个或多个订单项。同时,一个或多个订单项组成一个订单。订单和订单项的关系定义如下。

订单表(订单ID,会员ID,是否付款,运送方式,运费,提交时间)。

订单项表(订单项ID,订单ID,商品ID,商品数量)。

订单和订单项的E-R图如图2-2所示。

图2-2 订单与订单项的E-R图

(3)多对多联系的转换方法

对于实体之间是多对多联系的情况,各个实体可以直接转换为关系模式,联系则独立转换为一个关系模式,其属性包括联系自身的属性和相连各实体的主键。

【案例2-7】 高校学生选课联系 。一个学生可以选多门课程,一门课程可被多个学生选修,学生与课程是多对多联系。学生和课程实体转换为相应的独立关系模式,同时选课联系转换为一个单独关系模式。其E-R图如图2-3所示。关系模式:

学生( 学号 ,身份证号,姓名,性别,专业,出生日期,家庭地址),学号为主键(PK)。

课程( 课程代码 ,系部编号,学期,课程名称,课程类型,学分),课程代码为主键。

学生选课( 学号 课程代码 ,成绩),学号和课程代码为组合主键,学号、课程代码为外键。

图2-3 学生选课关系的E-R图

讨论思考:

1)什么是关系模式?其形式化表示是什么?

2)关系(二维表)具有哪六条基本性质?

3)由E-R图向关系模型的转换规则和方法是什么?

微课视频

课程视频2.2 C9eBR96gDh4S9QkFCe53zgPtgtMJACYyK+GCjwfHjFVsUa+nGbOXZ3rmhOVdjiJS

点击中间区域
呼出菜单
上一章
目录
下一章
×