第2章 关系数据库K5Word文档下载推荐.docx

上传人:b****4 文档编号:16369295 上传时间:2022-11-23 格式:DOCX 页数:12 大小:26.31KB
下载 相关 举报
第2章 关系数据库K5Word文档下载推荐.docx_第1页
第1页 / 共12页
第2章 关系数据库K5Word文档下载推荐.docx_第2页
第2页 / 共12页
第2章 关系数据库K5Word文档下载推荐.docx_第3页
第3页 / 共12页
第2章 关系数据库K5Word文档下载推荐.docx_第4页
第4页 / 共12页
第2章 关系数据库K5Word文档下载推荐.docx_第5页
第5页 / 共12页
点击查看更多>>
下载资源
资源描述

第2章 关系数据库K5Word文档下载推荐.docx

《第2章 关系数据库K5Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《第2章 关系数据库K5Word文档下载推荐.docx(12页珍藏版)》请在冰豆网上搜索。

第2章 关系数据库K5Word文档下载推荐.docx

◆关系演算(或逻辑方式):

关系演算是用谓词来表达查询要求的方式。

◆元组关系演算语言:

谓词变元的基本对象是元组变量。

◆域关系演算语言:

谓词变元的基本对象是域变量。

◆具有关系代数和关系演算双重特点的语言典型代表:

SQL。

4、关系数据语言的特点

◆关系语言是一种高度非过程化的语言

◆用户不必请求DBA(数据库管理员)为其建立特殊的存取路径,存取路径的选择由DBMS的优化机制来完成。

◆用户不必求助于循环结构就可以完成数据操作。

◆关系代数、元组关系演算和域关系演算三种语言在表达能力上是完全等价的。

◆能够嵌入高级语言中使用(SQL)

◆关系代数、元组关系演算和域关系演算均是抽象的查询语言,这些抽象的语言与具体的DBMS中实现的实际语言并不完全一样(同一要求在不同的DBMS中实现方法不同)。

但它们能用作评估实际系统中查询语言能力的标准或基础。

◆实际的查询语言除了提供关系代数或关系演算的功能外,还提供了许多附加功能,例如集函数、关系赋值、算术运算等。

◆SQL(StructurelQueryLanguage)是介于关系代数和关系演算之间的语言SQL。

SQL不仅具有丰富的查询功能,而且具有数据定义和数据控制功能,是集查询、DDL(数据定义语言)、DML(数据操纵语言)和DCL(数据控制语言)于一体的关系数据语言。

它充分体现了关系数据语言的特点和优点,是关系数据库的标准语言。

关系数据语言的共同特点是:

语言具有完备的表达能力,是非过程化的集合操作语言,功能强。

三、关系的三类完整性约束

关系模型允许定义三类完整性约束:

实体完整性、参照完整性和用户定义的完整性。

◆实体完整性:

由关系系统自动支持。

◆参照完整性:

早期系统不支持,目前大型系统能自动支持。

◆用户定义的完整性:

反映应用领域需要遵循的约束条件,体现了具体领域中的语义约束,用户定义后由系统支持。

2.2关系数据结构及形式化定义

关系模型中,实体和实体之间的联系均由单一的结构类型即关系(表)来表示。

从集合论角度给出关系数据结构的形式化定义如下:

2.2.1关系

1、域(Domain):

一组具有相同数据类型的值的集合。

例如:

整数、实数、介于某个取值范围的整数、指定长度的字符串集合、{‘男’,‘女’}、某个范围内的日期等。

2、笛卡尔积(CartesianProduct):

给定一组域D1,D2,…,Dn,这些域中可以是相同的,D1,D2,…,Dn的笛卡尔积为:

D1×

D2×

……×

Dn={(d1,d2,…,dn)|di∈Di,i=1,2,3,4………n}。

说明:

1)笛卡尔积是所有域的所有取值的一个组合、不能重复

2)每一个元素(d1,d2,….dn)叫作一个n元组或简称元组。

元素中的每一个值di叫作一个分量。

3)若Di(i=1,2,…,n)为有限集,其基数(元素个数)是Mi(i=1,2,…,n),则D1×

…×

Dn的基数M=M1×

M2×

M3×

…….×

Mn

4)笛卡尔积不满足交律:

即(d1,d2,….dn)≠(d2,d1,….dn)

5)笛卡尔积可表示为一个二维表。

表中的每行对应一个元组,表中的每列对应一个域。

例1:

三个域D1是导师集合SU={张清玫,刘逸}

D2是专业集合SP={计算机专业,信息专业}

D3是研究生集合POS={李勇,刘晨,王敏}。

则D1,D2,D3的笛卡尔积为:

D3笛卡尔积的基数为2*2*3=12,即D1×

D3一共有12个元组,这12个元组可列成一张二维表(如表2.1)。

表2.1D1、D2、D3的笛卡尔积

导师集合SU

专业集合SP

研究生集合POS

张清玫

刘逸

计算机专业

信息专业

李勇

刘晨

王敏

注意:

其中有一些元组是无实际意义的。

3、关系:

Dn的子集叫作在域D1,D2,…,Dn上的关系(实际上是一些元组)。

表示为:

R(D1,D2,…,Dn)

R是关系名,n是关系的目或度(Degree)。

说明:

1)关系中的每个元素是关系中的元组,通常用t表示。

n=1时,称为单目关系;

n=2时,称为二目关系。

2)关系是笛卡尔积的有限子集,所以关系也表示为一个二维表,表的每行对应一个元组,表的每列对应一个域。

3)域可以相同,为了加以区分,必须对每列起一个名字,称为属性。

n目关系必有n个属性。

4)关系满足交换律,即

(d1,d2,…,di,dj,…,dn)=(d1,d2,…,dj,di,…,dn)

(i,j=1,2,…,n)

由于笛卡尔积不满足交律,在关系中为关系的每个列附加一个属性名以取消关系元组的有序性。

5)码

候选码:

若关系中的某一属性组的值能唯一地标识一个元组,则称该属性组为候选码。

在最简单的情况下,候选码只包含一个属性.在最极端情况下,关系模式的所有属性组是这个关系模式的侯选码称为全码。

主码:

若一个关系有多个候选码,则选定其中一个为主码,主码的各属性为主属性。

学生关系中的学号。

非码属性:

不包含在任何侯选码中属性是非码属性。

性别。

例2:

在表2.1的笛卡尔积中取出一个子集来构造一个关系。

一般情况下,一个研究生只师从于一个导师,学习某一个专业,从中取出有实际意义的元组来构造关系。

该关系的名为SAP,属性名取域名即SU、SP、POS。

该关系表示为:

SAP(SU,SP,POS)

如导师与专业是一对一的,即一个导师只在一个专业;

导师与研究生是一对多的,即一个导师可以带多名研究生;

而一名研究生只有一个导师,则SAP可以包含三个元组,如表2.2所示。

表2.2SAP关系

SU(教师)

SP(专业)

POS(学生)

 

若研究生都不重名,则POS属性的每一个值都唯一地标识了一个元组,POS可以作为SAP关系的主码。

4、关系的三种类型:

1)基本关系(通常又称为基本表或基表):

是实际存在的表,它是实际存储数据的逻辑表示。

2)查询表:

是查询结果对应的表。

3)视图表:

视图表是由基本表或其他视图表导出的表,是虚表,不对应实际存储的数据。

5、按照关系的定义,关系可以是一个无限集合。

当关系作为关系数据模型的数据结构时,有如下的限定和扩充:

(1)无限关系在数据库系统中是无意义的。

因此,限定关系数据模型中的关系必须是有限集合。

(2)通过为关系的每个列附加一个属性名的方法取消关系属性的有序性。

即(d1,d2,…di,dj,…,dn)=(d1,d2,…dj,di,…dn)

(i,j=1,2,3,……n)

6、基本关系具有以下六条性质:

①列是同质的(Homogeneous),即每一列中的分量是同一类型的数据,来自同一个域。

例如:

姓名是字符型。

②不同的列可出自同一个域,称其中的每一列为一个属性,不同的属性要给予不同的属性名。

例如在上面的例子中,也可以只给出两个域:

人员(PERSON):

张清玫,刘逸,李勇,刘晨,王敏。

专业:

计算机专业,信息专业。

SAP关系的导师属性和研究生属性都从PERSON域中取值。

为了避免混淆,必须给这两个属性取不同的属性名,而不能直接使用域名。

定义导师属性名为SP,研究生属性名为PP。

③列的顺序无所谓,即列的次序可以任意交换。

遵循这一性质的数据库产品(如ORACLE),增加新属性时,永远是插至最后一列。

但也有许多关系数据库产品没有遵循这一性质,例如VFP仍然区分了属性顺序。

④任意两个元组不能完全相同。

由笛卡尔积的性质决定,但许多关系数据库产品没有遵循这一性质。

Oracle,VFP等都允许关系表中存在两个完全相同的元组,除非用户特别定义了相应的约束条件。

⑤行的顺序无所谓,即行的次序可以任意交换。

遵循这一性质的数据库产品(如ORACLE),插入一个元组时永远插至最后一行。

但也有许多关系数据库产品没有遵循这一性质,例如VFP仍然区分了元组的顺序

⑥分量取原子值,即每一个分量都是不可分的数据项。

这是规范条件中最基本的一条。

规范化的关系简称为范式(NormalForm)。

在下表中虽然很好地表达了导师与研究生之间的一对多关系,但由于POS分量取了两个值,不符合规范化的要求,因此这样的关系在数据库中是不允许的。

SU(教师)

SP(专业)

POS(学生)

PG1

PG2

2.2.2关系模式

1、什么是关系模式

◆关系模式(RelationSchema)是型,关系是值。

◆关系模式是对关系的描述。

2、关系模式要描述的内容

◆关系是元组的集合,关系模式是元组集合的结构,即关系模式的元组由哪些属性构成?

属性来自的哪些域?

属性与域之间的映象关系。

◆元组语义以及完整性约束条件:

这些约束可以通过属性取值范围的限定。

正式职工年龄小于60岁(65岁以后必须退休)。

或者通过属性值间的相互关连(主要体现于值的相等与否)反映出来。

关系模式应当刻划出这些完整性约束条件。

◆属性间的数据依赖关系集合。

◆一个关系通常是由赋予它的元组语义来确定的。

元组语义实质上是一个n目谓词(n是属性集中属性的个数)。

凡使该n目谓词为真的笛卡尔积中的元素(或者说凡符合元组语义的那部分元素)的全体就构成了该关系模式的关系。

3、关系模式的表示

◆一个关系模式是一个5元组。

它可以形式化地表示为:

R(U,D,dom,F)

R为关系名、U为组成该关系的属性名集合、D为属性组U中属性所来自的域、dom为属性向域的映象集合,F为属性间数据的依赖关系集合。

例:

导师和研究生出自同一个域---人,取不同的属性名,并在模式中定义属性向域的映象,即说明它们分别出自哪个域:

dom(SU)=dom(POS)=PERSON

◆关系模式通常可以简记为R(U)或R(A1,A2,…………An)

其中R为关系名,A1、A2、A3、……、An为属性名。

而域名及属性向域的映象常常直接说明为属性的类型、长度。

定义学生与课程关系模式及主码如下:

S(Sno,Sname)--------Key(Sno)

C(Cno,Cname)--------Key(Cno)

SC(Sco,Cno,Grade)----Key(Sco,Cno)

4、关系模式与关系

◆关系是关系模式在某一时刻的状态或内容。

◆关系模式是对关系的描述,是静态的、稳定的。

◆关系是动态的、随时间不断变化的,因为关系操作在不断地更新着数据库中的数据。

◆在实际应用中,人们常常把关系模式和关系都称为关系,通过上下文加以区别。

2.2.3关系数据库

1、关系数据库:

在一个给定的应用领域中,所有实体及实体之间联系的关系的集合构成一个关系数据库。

2、关系数据库的型与值

◆关系数据库的型:

是关系数据库模式,是对关系数据库的描述,包括若干域的定义和在这些域上定义的若干关系模式。

◆关系数据库的值:

是这些关系模式在某一时刻对应的关系的集合,通常简称为关系数据库。

2.3关系的完整性

◆关系模型的完整性规则是对关系的某种约束条件。

◆关系模型中有三类完整性约束:

●实体完整性

●参照完整性

●用户定义的完整性

实体完整性和参照完整性是关系模型必须满足的完整性约束条件,被称作是关系的两个不变性,应该由关系系统自动支持。

一、实体完整性

1、规则2.1---实体完整性规则:

若属性A是基本关系R的主属性,则属性A不能取空值。

例1:

在关系“学生(学号,姓名,专业,年纪)”中,“学号”属性为主码,则“学号”不能取空值。

实体完整性规则规定基本关系的所有主属性都不能取空值,而不仅是主码整体不能取空值。

(主码可以包含多项主属性)

学生选课关系“选修(学号,课程号,成绩)”中,“学号、课程号”为主码,则“学号”和“课程号”两个主属性都不能取空值。

2、关系模型必须遵守实体完整性规则的原因

1)实体完整性规则是针对基本关系而言的。

一个基本关系通常对应现实世界的一个实体集。

学生关系对应于学生的集合。

2)现实世界中的实体是可区分的,因为它们具有某种唯一性标识。

在关系模型中以主码作为唯一性标识。

3)主码中的属性即主属性不能取空值。

所谓空值就是“不知道”或“无意义”的值。

如果主属性取空值,就说明存在某个不可标识的实体,即存在不可区分的实体,这与第

(2)点相矛盾。

因此这个规则称为实体完整性。

二、参照完整性

1、关系间的引用

在关系模型中实体及实体间的联系都是用关系来描述的,这样就存在着关系与关系间的引用。

学生实体和专业实体可以用下面的关系表示,其中主码用下划线标识:

学生(学号,姓名,专业号,年龄)

专业(专业号,专业名)

这两个关系之间存在着属性的引用,即学生关系引用了专业关系的主码“专业号”。

学生关系中的“专业号”值必须是确实存在的专业的专业号。

即学生关系中的某个属性的取值需要参照专业关系的属性取值。

学生、课程、学生与课程之间的多对多联系可以如下三个关系表示:

学生(学号,姓名,专业号,年龄)

课程(课程号,课程名,学分)

选修(学号,课程号,成绩)。

这三个关系之间也存在着属性的引用,选修关系引用了学生关系的主码“学号”和课程关系的主码“课程号”。

选修关系中某些属性的取值需要参照其他关系的属性取值。

不仅两个或两个以上的关系间可以存在引用关系,同一关系内部属性间也可能存在引用关系。

例3关系:

学生(学号,姓名,专业号,年龄,班长学号)

“学号”属性是主码,“班长”属性(用学号表示)表示该学生所在班级的班长的学号,它引用了本关系“学号”属性,即“班长”必须是确实存在的学生的学号。

2.外码(ForeignKey)

外码定义:

设F是基本关系R的一个或一组属性,但不是关系R的主码。

如果F与基本关系S的主码Ks相对应,则称F是基本关系R的外码。

1)基本关系R为参照关系、基本关系S为被参照关系或目标关系。

2)关系R和S不一定是不同的关系。

目标关系S的主码Ks和参照关系的外码F必须定义在同一个(或一组)域上。

3)外码并不一定要与相应的主码同名。

当外码与相应的主码属于不同关系时,往往取相同的名字,以便于识别。

例4:

学生实体和专业实体可以用下面的关系表示,主码用下划线标识:

学生R(学号,姓名,专业号,年龄)

专业S(专业号,专业名)

学生关系R的“专业号”属性与专业关系S的主码“专业号”相对应,因此“专业号”属性是学生关系R的外码。

此时,专业关系S是被参照关系,学生关系R为参照关系。

如图所示:

专业号

学生关系专业关系

例5:

学生(学号,姓名,性别,专业号,年龄)

学号课程号

学生关系选课关系课程关系

选修关系的“学号”属性(是主属性,但不是主码)与学生关系的主码“学号”相对应,“课程号”属性(是主属性,但不是主码)与课程关系的主码“课程号”相对应,因此“学号”和“课程号”属性是选修关系的外码。

这里学生关系和课程关系均为被参照关系,选修关系为参照关系。

在例3中,“班长”属性与本关系的主码“学号”属性相对应,因此“班长”是外码。

这里学生关系既是参照关系也是被参照关系。

外码并不一定要与相应的主码同名(如例3)。

在实际应用当中,为了便于识别,当外码与相应的主码属于不同关系时,往往给它们取相同的名字。

3、参照完整性规则

规则2.2----参照完整性规则:

若属性(或属性组)F是基本关系R的外码,它与基本关系S的主码Ks相对应(基本关系R和S不一定是不同的关系),则对于R中每个元组在F上的值必须为:

●或者取空值(F的每个属性值均为空值);

●或者等于S中某个元组的主码值。

即属性F本身不是主属性,则可以取空值,否则不能取空值。

参照完整性规则就是定义外码与主码之间的引用规则。

例6:

对于学生关系中每个元组的“专业号”属性只能取下面两类值:

(1)空值,表示尚未给该学生分配专业。

(2)非空值,这时该值必须是专业关系中某个元组的“专业号”值,表示该学生不可能分配到一个不存在的专业中。

即被参照关系“专业”中一定存在一个元组,它的主码值等于该参照关系“学生”中的外码值。

例7:

对于例2,按照参照完整性规则,“学号”和“课程号”属性也可以取两类值:

空值或目标关系中已经存在的值。

但由于“学号”和“课程号”是选修关系中的主属性,按照实体完整性规则,它们均不能取空值。

所以选修关系中的“学号”和“课程号”属性实际上只能取相应被参照关系中已经存在的主码值。

参照完整性规则中,R与S可以是同一个关系。

例如对于例3,按照参照完整性规则,“班长”属性值可以取两类值:

(1)空值,表示该学生所在班级尚未选出班长。

(2)非空值,这时该值必须是本关系中某元组的学号值。

三、用户定义的完整性

◆用户定义的完整性是针对某一具体关系数据库的约束条件,反映某一具体应用所涉及的数据必须满足的语义要求。

某个属性必须取唯一值、某些属性值之间应满足一定的函数关系、某个属性的取值范围在0~100之间等。

例:

课程(课程号,课程名,学分)

“课程名”属性必须取唯一值

非主属性“课程名”也不能取空值

“学分”属性只能取值{1,2,3,4}

◆关系模型应提供定义和检验这类完整性的机制,以便用统一的系统的方法处理它们,而不要由应用程序承担这一功能。

小结

◆关系数据结构

●关系

⏹域、笛卡尔积、关系(关系、属性、元组)

⏹候选码,主码,主属性

⏹基本关系的性质

●关系模式

●关系数据库

◆关系的数据操作集合

●查询

⏹选择、投影、连接、除、并、交、差

●数据更新

⏹插入、删除、修改

◆关系的完整性约束

⏹实体完整性

⏹参照完整性

●外码

⏹用户定义的完整性

=======完=======

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 表格模板 > 合同协议

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1