第二章 关系数据库1
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第二章关系数据库
一、内容提要
本章实际上研究的是关系的运算。
学习目的:
关系运算是设计关系数据库操作语言的基础,因为其中的每一个询问往往表示成一个关系运算表达式,在我们的课程中,数据及联系都是用关系表示的,所以实现数据间的联系也可以用关系运算来完成。
通过本章学习,应重点掌握:
(1)关系数据库的基本概念;
(2)如何用关系代数表达式来表达实际查询问题;
(3)如何用元组演算表达式来表达实际查询问题;
(4)如何用域演算表达式来表达实际查询问题;
(5)如何将关系代数表达式转换为元组演算表达式或转换为域演算表达式。
(一)关系模型概述
1.关系模型组成
关系模型由关系数据结构、关系操作集合和关系完整性约束三部分组成。关系操作分为两大部分如图所示。
2.关系操作的特点
关系操作的特点是操作对象和操作结果都是集合。而非关系数据模型的数据操作方式则为一次一个记录的方式。
关系数据语言分为三类:
(1)关系代数语言:如ISBL;
(2)关系演算语言:分为元组关系演算语言(如Alpha,Quel)、域关系演算语言(如QBE);
(3)具有关系代数和关系演算双重特点的语言:如SQL。
(二)关系数据结构及其形式化定义
1.域
定义域是一组具有相同数据类型的值的集合。
2.笛卡尔积
定义设D1,D2,D3,…,D n,为任意集合,定义D l,D2,D3,…,D n的笛卡尔积为D1×D2×D3×…×D n={(d1,d2,d3,…dn)[di∈Di,i=1,2,3…,n]
其中每一个元素(dl ,d2,d3,…,dn ,)叫做一个n 元组(n 一tuple)或简称为元组(Tuple),每一个值di 叫做一个分量(Component),若Di(i =l ,2,…n)为有限集,其基数(Cardinal number)为mi(i=l ,2,3,…,n),
则D 1×D 2×D 3×…×D n 的基数M 为 M =
∏=n
i 1
mi
笛卡尔积可以用二维表来表示。 例 D1={0,1},D2={a ,b ,c}
则:D1×D2={(0,a),(0,b),(0,c),(1,a),(1,b),(1,c)}用二维 表来表示,如图2—2所示。
3.关系的形式化定义及相关名词
定义 D 1×D 2×D 3×…×D n 的子集叫做在域D 1,D 2,D 3,…,D n 上的关系,
用R(D 1,D 2,D 3,…,D n ),称关系R 为n 元关系。
目或度 这里的R 表示关系的名字,n 是关系的目或度(Degree)。
候选码 若关系中的某一属性组的值能惟一的标识一个元组,则称该属性组为候选码
(Candidate Key)。
主码 若一个关系有多个候选码,则选定其中一个为主码(PrimaryKey)。主码诸属性称为
主属性。不包含在任何候选码中的属性称为非码属性(Non —Key attribute)。关系模型的所有属性组是这个关系模式的候选码,称为全码(All —key)
4.关系的三种类型
(1)基本关系(通常又称为基本表或基表),是实际存在的表,它是实际存储数据的逻辑表示 (2)查询表,查询结果对应的表
(3)视图表,是由基本表或其他视图表导出的表,也常称为虚表 5.基本关系有以下五条性质
(1)每一列中的分量必须是同一类型的数据,来自同一个域 (2)属性不能重名 (3)行列的顺序无关
(4)任何两个元组不能完全相同
(5)每一个分量必须是不可再分的数据项
(三)关系数据库与关系模式
在数据库中要区分型和值。关系数据库中的型也称为关系数据库模式,是关系数据库的描述。它包括若干域的定义以及在这些域上定义的若干关系模式。关系数据库的值是这些关系模式在某一时刻对应的关系的集合,通常称之为关系数据库。
定义 关系的描述称为关系模式(Relation Schema)。可以形式化的表示为 R(U ,D ,dom ,F)
×
其中,R表示关系名;U是组成该关系的属性名集合;D是属性的域;dom是属性向域的映像集合;F为属性间数据的依赖关系集合。
通常将关系模式简记为:
R(U)或R(Al,A2,A3,…,An。)
其中R为关系名,A1,A2,A3,…,An。为属性名,域名、属性向域的映像常常直接说明属性的类型、长度。
例定义学生与课程关系模式及主码如下:
(1)S(Sno,Sname,SD,SA)
Key(Sno)
(2)C(Cno,Cname,PCno)
Key(Cno) Dom(PCno)=Cno
这里,Pcno是先行课程号,来自Cno域,但由于Pcno属性名不等于Cno值域名,所以要用Dom来定义。
能否将Pcno直接改为Cno呢?
不能,因为在关系模型中,各列属性必须取相异的名字。
(3)SC(Sno,Cno,Grade)
Key(Sno,Cno)
其中,SC关系中的Sno、Cno又分别为外码。因为它们分别是S、C关系中的主码。
(四)关系的完整性
关系模型的完整性规则是对关系的某种约束条件。关系的完整性共分为三类:
实体完整性、参照完整性、用户定义完整性。
(1)实体的完整性(Entity Integrity)规定:若属性A是基本关系R的主属性,则属性A不能
取空值。即主属性不能为空。
(2)参照的完整性(Referential Integrity)规定:若F是基本关系R的外码,它与基本关系S
的主码Ks相对应(基本关系R和S不一定是不同的关系)则对于R中每个元组在F上的值必须为:
①或者取空值(F的每个属性值均为空值);即外码可以为空
②或者等于S中某个元组的主码值。
(3)用户定义的完整性(User defined Integrity):就是针对某一具体的关系数据库的约束条
件,由应用的环境决定。
(五) 关系代数
关系代数是一种抽象的查询语言,是关系数据操纵语言的一种传统表达方式。它是用对关系的运算来表达查询的。
关系运算符有四类:集合运算符,专门的关系运算符,算术比较符和逻辑运算符,
如图2—3所示。