2.1 关系模型概述
【案例2-1】关系模型的应用最广泛。关系型数据库系统主要是利用关系型数据库管理系统RDBMS为核心统一管理控制各种业务数据的处理,关系型数据库在实际业务中应用最广泛,极大地推动了商业、金融、交通运输、物流、办公等各领域或行业大量业务数据的处理。
2.1.1 关系模型的基本概念
关系模型是近几十年最重要和应用最广泛的数据库模型,大型数据库管理系统SQL Server、Oracle、DB2和Sybase等都是基于关系模型设计研发的,其数据结构直观、简洁,可统一用一张二维表来表示现实世界中的实体(事物)及其之间的联系。
1.关系及关系模型常用概念
为了后续更好地掌握数据库技术,下面对关系模型中常用的重要概念逐一进行介绍。
1)关系。关系是一张二维表(简称为表),表示数据的逻辑结构,将现实世界中实体(事物)之间的联系归结(转化)为简单的二维关系,其中,表中的每一行代表一个记录(元组),每一列代表一个属性(其属性值称为域),可以用下面更一般的形式定义。
常用R(D1,D2,…,Dn)表示D1×D2×…×Dn的子集域D1,D2,…,Dn上的关系,其中R表示关系名,n是关系的目或度(列数)。
2)记录和属性。在关系模型中,二维表(关系)中的行称为记录(或元组)。二维表的列称为属性。每个属性对应表中一个字段,属性名即字段名,属性值为各行字段值。
3)域。域(Domain)是一组具有相同数据类型值的集合。用域表示属性的取值范围,属性A的域可以用DOM(A)表示,每个属性对应一个域,不同的属性可以具有相同的域。
【案例2-2】不同域应用示例。D1={百分制成绩X,1≤X≤100}表示百分制成绩的集合。D2={男,女}表示性别集合。D3={企业职工},表示企业18~60岁在职职工(特殊情况延迟退休等除外)的集合。
4)关系模型。关系模型(Relation Model)是指以二维表结构表示的实体关系,用键表示实体间联系的数据模型,其中键唯一标识一个记录,并且键可以是单一属性或属性的组合。
关系模型的组成包括关系数据结构、关系操作和关系完整性约束三部分。关系模型是关系数据库的构建基础,所有关系数据库都支持关系模型。在关系模型中,无论实体还是实体之间的联系均为二维表结构,每个关系对应一张二维表,如学生实体由学生关系表示。
【案例2-3】高校学生数据表。高校学生数据表包含的主要信息为:学号、姓名、性别、专业、出生日期和家庭地址。表头表示关系型,从第二行开始以下各行都是这个关系型的实例(记录),如表2-1所示。
表2-1 高校学生数据表
5)元数和基数。元数是指关系(二维表)中属性(列)的个数。基数是指记录(行)的个数。表2-1的关系的元数和基数分别为6和5。
2.键、主键和外键
键也称为码,在关系中由唯一可标识记录的属性或属性组构成,如学生的学号,公民的身份证号或(学号,姓名)等。
1)候选键。若关系表中的某一属性或属性组的值可唯一确定一个记录,则称该属性或属性组为候选码。
2)主键。主键(primary key)是在候选键中选定一个键作为记录标识。一般情况下,若不加以说明,键均指主键(码),如果关系中有多个候选键,可取其中一个作为该关系的主键,主键不允许为空值(没有取值),如商品(订单号,商品名称,商品编号,价格)的主键可以选“订单号”,也可以选(订单号,商品名称)。
3)外键。外键指若在关系R中包含另一个关系S的主键所对应的属性或属性组K,则称K为R的外键(码)。如对于商品(订单号,商品名称,商品编号,价格),其中的“商品编号”就是“商品”关系的外键。
注意:外键是另一个关系的主键,而并非本关系的主键。关系数据库的表间关系需要借助外键建立关联,实现记录一一对应(避免出现差错)。此外,外键需要满足外键约束条件,即外键为空值或是另外一个关系已存记录的主键。
关系模型中主键和外键为现实世界中实体之间的联系建立了桥梁。基本关系R称为参照关系,基本关系S称为被参照关系或目标关系。
特别理解
关系与关系中的主外键
2.1.2 关系的类型和性质
关系有3种类型:基本关系(或称基本表或表)、查询表和视图表。基本表是实际存在的表,是实际存储数据的“二维表”。查询表是查询结果对应的表(可能是部分数据)。视图表是由基本表或其他视图表导出的表,是虚表,不对应实际存储的数据。关系(表)具有以下几条基本性质。
知识拓展
关系的5条基本性质
1)关系中的列(属性/字段)是同质的(Homogeneous),即每一列中的数据项(属性值/字段值)是同一种类型,即要求同列同类同域。
2)关系中属性(列)必须是原子值,即每个属性(列)都必须是不可再分的数据项。关系模型要求关系必须规范化,即要求关系必须满足必要的规范条件。这些规范条件中最基本的一条是:关系的每一个分量必须是一个不可再分的数据项(属性值/字段值)。
3)任何两行不能完全相同。如果完全相同则表明记录存在重复,会造成不一致或错误,因此要保证实体的唯一性和完整性。如一次存款只能有一条记录。
4)任何两列不能同名。不同的列可以来自同一域,即列值的类型可以相同。
5)关系中的行(记录)不分先后顺序,任意两行记录的次序可以交换。如存款记录与先后办理的顺序无关。
【案例2-4】高校学生数据表。高校学生数据表主要包含以下数据项:学号、姓名、性别、专业、出生日期(年、月、日)(不规范)和家庭地址。表头表示关系型,从第二行开始都是一个关系型的实例,如表2-2所示。
表2-2 学生数据表
对比【案例2-3】和【案例2-4】学生数据表的“出生日期”属性的设计,【案例2-3】中“出生日期”使用一个日期类型的数据进行存储,该属性不可分,而【案例2-4】中属性“出生日期”再分为年、月、日3个部分(不是原子的),导致属性“出生日期”不符合关系分量规范,是一种不合适且不规范的关系数据库设计,将直接影响数据处理。
2.1.3 关系模式的表示
关系模式(Relation schema)是对关系结构特征的描述,可形式化地表示为:
R(U,D,DOM,F)
其中,R为关系名,U为组成该关系的属性(列)名集合,D为属性组U中属性取值的域,DOM为属性域的映像(对应)集合,F为属性之间数据的依赖关系集合。
通常,关系模式可以简记为R(U)或R(A1,A2,…,An),其中R为关系名,A1,A2,…,An为属性名。例如,学生关系的关系模式(二维表)可表示为(另一种表示形式):
学生(学号,姓名,性别,专业,出生日期,家庭地址)
关系模式主要描述(确定)两方面的内容。
1)关系模式指明关系(表)的结构(型),即构成的属性(列)及其域(具体关系数据库中常为属性的数据类型和长度),以及属性与域之间的映射(对应)关系。
特别理解
关系数据库的型与值
2)关系模式应说明属性间的相互关联关系和属性本身的约束条件。通过两个示例进行说明。如,男性职工年龄小于等于60岁(实行延迟退休的特殊情况除外)。又如,百分制成绩必须在0~100之间。对于属性间的相互关联关系具体表现为一个表的主键同其外键(另外表的主键),详见2.2.2节中的介绍。
2.1.4 由E-R图向关系模型的转换
1.转换规则
E-R图组成三要素包括实体、实体的属性和实体间的联系,而关系模型是用二维表表示现实世界中实体之间的联系,即关系模式集合,所以将E-R图转换为关系模型(表),就是将E-R图转换成关系模式集合的过程。实体类型和二元联系类型的转换规则如下。
1)实体转换关系规则。将每一个实体转换成一个关系模式时,实体的属性就是关系的属性,实体的标识符就是关系的键,如【案例2-3】中的学生信息实体的学号为关系模式中的键。
2)二元联系类型的转换规则如下。①若实体间的联系为一对一(1∶1),则将两个实体类型转换成两个关系模式的过程中,任选一个属性或属性组在其中加入另一个关系模式的键和联系类型的属性。②若实体间的联系是一对多(1∶n),则在多的一端实体的关系模式中,加上一的一端实体类型的键和联系类型的属性。③若实体间的联系是多对多(m∶n),则将联系类型也转换为关系模式,其属性为两端实体类型的键加上联系类型的属性,而键为两端实体键的组合。
2.转换方法
1)一对一联系的转换方法。
对于一对一(1∶1)、一对多(1∶n)和多对多(m∶n)3种情况的两个实体(事物)联系转换为关系(二维表)的方法,可以通过应用实例分别介绍。
【案例2-5】每个学生只有一个身份证,每个身份证只属于一个学生,学生和身份证之间的关系为一对一关系。学生与身份证实体关系图如图2-1所示。在学生端加入身份证号作为联系属性在两者之间建立一对一关系。
学生(学号,身份证号,姓名,性别,专业,出生日期,家庭地址),其中学号为主键(PK),身份证号为外键(FK)关联到关系身份证。
身份证(身份证号,签发机关,有效期始,有效期止),身份证号为主键。
图2-1 学生和身份证一对一联系
2)一对多联系的转换方法。
知识拓展
数据表与属性的命名规范
方法一:可以将联系与多的一端实体(事务)所对应的关系模式合并,并加一端实体的主键和联系的属性,组成新的关系(表)的属性(列)。
方法二:可以将联系转换为一个独立关系模式,其属性包含联系自身的属性以及相连接的两端实体的主键,组成新的关系(表)的属性(列)。
【案例2-6】商品订单和订单项之间的一对多关系。每一个商品订单包含一个或多个订单项,同时,一个或多个订单项组成一个订单。订单和订单项的关系定义如下。订单和订单项的E-R图如图2-2所示。
图2-2 订单与订单项一对多联系
订单表(订单ID,会员ID,是否付款,运送方式,运费,提交时间)。
订单项表(订单项ID,订单ID,商品ID,商品数量)。
3)多对多联系的转换方法。
对于实体之间是多对多的联系情况,各个实体可以直接转换为关系模式,联系则独立转换为一个关系模式,其属性包括联系自身的属性和相连各实体的主键。
【案例2-7】高校学生选课联系。一个学生可以选多门课程,一门课程可被多个学生选修,学生与课程是多对多联系。将学生和课程实体转换为相应的独立关系模式,同时选课联系转换为一个单独关系模式。其E-R图如图2-3所示。具体关系模式如下。
学生(学号,身份证号,姓名,性别,专业,出生日期,家庭地址),其中学号为主键(PK)。
课程(课程代码,系部编号,学期,课程名称,课程类型,学分),其中课程代码为主键。
学生选课(学号,课程代码,成绩),学号和课程代码为组合主键,学号、课程代码为外键。
图2-3 学生选课关系多对多E-R图
讨论思考:
1)什么是关系模式?它的形式化表示是什么?
2)关系应该具有哪些性质?