第二章 关系数据库
Download
1 / 76

第二章 关系数据库 - PowerPoint PPT Presentation


  • 85 Views
  • Uploaded on

第二章 关系数据库. 本章内容概述. 关系模型的基本概念 关系的码 关系代数 关系演算 关系代数表达式的优化. §2.1 关系模型概述. 关系数据库,是建立在关系数据模型基础上的数据库系统 关系模型又是基于数学方面的数据抽象理论 关系数据库,用数学的方法来处理数据库中的数据. § 2.1.1 关系数据模型的基本概念. 关系模型的组成: 数据结构 关系的操作 完整性约束. 数据结构: 关系模型中数据的逻辑结构是一张二维表 关系的操作: ( 1 )查询操作: A 选择 B 连接 C 除 D 并 E 交 F 差

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about ' 第二章 关系数据库' - philyra-desma


An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript

本章内容概述

  • 关系模型的基本概念

  • 关系的码

  • 关系代数

  • 关系演算

  • 关系代数表达式的优化


§2.1 关系模型概述

  • 关系数据库,是建立在关系数据模型基础上的数据库系统

  • 关系模型又是基于数学方面的数据抽象理论

  • 关系数据库,用数学的方法来处理数据库中的数据


2 1 1
§ 2.1.1关系数据模型的基本概念

关系模型的组成:

  • 数据结构

  • 关系的操作

  • 完整性约束


  • 数据结构:

    关系模型中数据的逻辑结构是一张二维表

  • 关系的操作:

    (1)查询操作:A选择 B连接 C除 D并 E交 F差

    (2)更新操作:A增加 B删除 C修改


表达关系操作的关系数据语言

  • ① 关系代数

    关系代数是用对关系的运算来表达查询要求的方式。

  • ② 关系演算

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

  • ③ 介于关系代数和关系演算之间的语言SQL(Structured Query Language)


完整性约束:(定义P37)

  • (1)实体完整性

  • (2)参照完整性

  • (3)用户定义的完整性


2 1 2
§ 2.1.2笛卡尔积

设D1, D2,…,Dn为域,则

D1×D2×…×Dn={(d1,d2,…,dn)|di∈Di,i=1, …,n}为D1,

D2,…,Dn的笛卡尔积。

其中每个元素(d1,d2, …,dn)称为一个n元组(n-Tuple),简称

元组(Tuple),元素中每个di称为分量(Component),diDi。

若Di的基数为mi,笛卡尔积的基数M为笛卡尔积可以表示为一个

二维表,是元组的集合。


2 1 3
§ 2.1.3关系的定义

  • 笛卡尔积D1D2 …Dn的任一子集称为在域D1, D2, …,Dn上的关系,表示为R(D1, D2, …, Dn )

  • 这里R表示关系的名字,n是关系的目或度(Degree)。

  • 关系是笛卡尔积的有限子集,所以关系也是一个二维表。表中的每一行对应一个元组,表中的每一列对应一个域。由于域可以相同,为了加以区别,必须对每列取一个名字,称为属性。关系中属性的个数称为元数,元组中的一个属性值称为分量。


  • 形式化的关系定义同样可以把关系看成二维表, 给表的每一列取一个名字,称为属性(attribute)。n 目元关系有 n 个属性, 属性的名字要唯一。属性的取值范围Di(i=1, …,n) 称为值域(Domain)。在实际应用的数据库中,通常关系称为数据表,属性被称为字段,元组被称为记录。


2 1 4
§ 2.1.4关系的性质

  • 同一属性的数据具有同质性

  • 同一关系的属性名具有不能重复性

  • 关系中的列位置具有顺序无关性

  • 关系具有元组无冗余性

  • 关系中的元组位置具有顺序无关性

  • 关系中每一个分量都必须是不可分的数据项


关系性质1——同质的列


关系性质2——不同的属性名

姓名2

曾用名


关系性质3——属性无序


重复的

元组

重复的

元组!

关系性质4——元组不重复


关系性质5——元组无序


关系性质6——分量是原子

规范化关系

非规范化关系


§2.2 关系的码(键)


2 2 1
§ 2.2.1侯选码(键)与主码(键)

  • 能唯一标识关系中元组的一个属性或属性集,称为候选码 (Candidate key),也称候选关键字。

  • 如“学生关系”中的学号能唯一标识每一个学生,则属性“学号”是学生关系的候选码。在“选课关系” 中,只有属性的组合“学号+ 课程号”才能唯一地区分每一条选课记录,则属性集“学号+ 课程号”是选课关系的候选码。



2 2 2
§ 2.2.2外部关系码(键)

设F 是基本关系R 的一个或一组属性, 但不是关系R 的主码( 或候选码) 。如果 F 与基本关系 S 的主码 Ks 相对应, 则称 F 是基本关系 R 的外部关系码,也简称外码 (Foreign key), 并称基本关系R为参照关系 (Referencing Relation), 基本关系 S 为被参照关系 (Referenced Relation) 或目标关系(Target Relation)。


外部关系码(键)

学生关系

课程关系

学习成绩关系

外部键

主键

主键

外部键


参照完整性

职工表(R2)

部门表(R1)

外部关系键

主关系键


2 2 3
§ 2.2.3关系模型的完整性

关系模型的实体完整性(Entity Integrity)

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

(1)实体完整性能够保证实体的唯一性

(2)实体完整性能够保证实体的可区分性

例如在学生表中,由于“学号”属性是码,则“学号”值不能为空

值,学生的其他属性可以是空值,如“年龄”值或“性别”值如果

为空,则表明不清楚该学生的这些特征值。


参照完整性

  • 关系模型的参照完整性(Referential Integrity):

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


  • 例如,对于上述教师表中"教师号"属性只能取下面两类值:空值,表示尚未给该教师分配系别:非空值,该值必须是系别关系中某个元组的"系编号"值。一个教师不可能分配到一个不存在的系中,即被参照关系"教师"中一定存在一个元组,它的主码值等于该参照关系"教师"中的外码值。


用户定义的完整性

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

例如,学生考试的成绩必须在O到100 之间,在职职工的年龄不能大于60岁等,都是针对具体关系提出的完整性条件。


§ 2.3关系数据库模式与关系数据库


2 3 1
2.3.1关系数据库模式与关系数据库

一个关系的属性名的集合 R(Al,A2, …,An) 叫做关系模式,一般可简化为

R(U)或R(A1,A2, …,An)

其中 R 为关系名,A1,A2, …,An 为属性名 (i=1,2, …,n) 。

关系模式可形式化地表示为

R(U,D,dom,F)


其中U 为组成关系的属性名的集合,D 为属性组U 中属性所来自的域,dom 为属性和域之间的映像集合,F 为关系中属性间的依赖关系集合。在书写过程中, 一般用下划线表示出关系中的主码。


由定义可以看出,关系模式是关系的框架( 或者称为表框架), 是对关系结构的描述。它指出了关系由哪些属性构成。关系模式是静态的、稳定的,而关系是动态的、随时间不断变化的,它是关系模式在某一时刻的状态或内容,这主要是由于关系的各种操作在不断地更新着数据库中的数据。


一组关系模式的集合叫做关系数据库模式。关系数据库模式是对关系数据库结构的描述一组关系模式的集合叫做关系数据库模式。关系数据库模式是对关系数据库结构的描述,或者说是对关系数据库框架的描述,也就是前面所讲过的关系模式,可以看作是关系的型。与关系数据库模式对应的数据库中的当前值就是关系数据库的内容,称为关系数据库的实例, 可以看作是关系的值。


2 3 2
§ 2.3.2一组关系模式的集合叫做关系数据库模式。关系数据库模式是对关系数据库结构的描述关系数据库

  • 关系数据库

    • 在给定的应用领域中,相应所有实体及

      实体之间联系所形成关系的集合

  • 关系数据库模式

    • 关系数据库中所有关系模式的集合

  • 关系数据库的值

    • 关系数据库在某一时刻对应关系的集合


某关系的结构一组关系模式的集合叫做关系数据库模式。关系数据库模式是对关系数据库结构的描述

整个数据库

某关系的实例

关系数据库模式


§2.4 一组关系模式的集合叫做关系数据库模式。关系数据库模式是对关系数据库结构的描述关系代数


2 4 1
2.4.1一组关系模式的集合叫做关系数据库模式。关系数据库模式是对关系数据库结构的描述关系代数的分类及其运算符

关系代数的运算由运算对象、运算符和运算结果三大要素组成。

运算对象为关系,运算结果亦为关系,运算符包括四类:集合运算符、专门的关系运算符、比较运算符和逻辑运算符。


  • (1) 一组关系模式的集合叫做关系数据库模式。关系数据库模式是对关系数据库结构的描述集合运算符 :

    ∪ ( 并运算 ), 一 ( 差运算 ),∩( 交运算 ), × ( 广义笛卡尔积 )

  • (2) 专门的关系运算符:

    σ ( 选择 ), π( 投影 ), ⋈ ( 连接 ), ÷ ( 除 )

  • (3) 比较运算符 :

    > (大于), ≥ (大于等于),<(小于),≤ (小于等于),=(等于),≠ (不等于)

  • (4) 逻辑运算符:

    ¬( 非), ∧ ( 与), ∨ ( 或)


比较运算符和逻辑运算符主要用来辅助专门的关系运算。比较运算符和逻辑运算符主要用来辅助专门的关系运算。关系代数一般可分为传统的集合运算和专门的集合运算两类操作。传统的集合运算将关系看成元组的结合,其运算是从关系的 "水平" 方向 ( 即行的角度 ) 来进行,而专门的关系运算不仅涉及行,而且还涉及列。


2 4 2
§ 2.4.2比较运算符和逻辑运算符主要用来辅助专门的关系运算。传统的集合运算

传统的集合运算是二目运算,它包括并、差、交、广义笛卡尔积四种运算。

设关系R 和S 具有相同的目n( 即两个关系都有n 个属性), 并且相应的属性取自同一个域, 则定义并、差、交、广义笛卡尔积运算如下:


Union
并(比较运算符和逻辑运算符主要用来辅助专门的关系运算。Union)运算

关系 R 与关系 S 的并运算表示为 :

R∪S={t|t∈R V t∈S }

上式说明,R 和S 并的结果仍为n 目关系,

其数据由属于R 或属于S 的元组组成。运算结果

也可用图 2.1所示的阴影部分表示。

图2.1 集合R和S并运算结果示意图

R∪S


Differrence
差(比较运算符和逻辑运算符主要用来辅助专门的关系运算。Differrence)运算

关系R 与关系S 的差运算表示为:

R-S={t|t∈R∧¬t∈S }

上式说明:R 和S 差运算的结果关系仍为n

目关系,其数据由属于R 而不属于S 的所有元

组组成。运算结果也可用图2.2 所示的阴影部分

表示。

图2.2 集合R和S差运算结果示意图

R - S


Intersection
交(比较运算符和逻辑运算符主要用来辅助专门的关系运算。Intersection)运算

关系R 与关系S 的交运算表示为:

R∩S={t|t∈R∧t∈S }

关系的交也可以用差来表示,即: R∩S=R一(R-S)

上式说明:R 和S 交运算的结果关系仍为n

目关系,其数据由既属于R 同时又属于S的元组

组成。运算结果也可用图2.3 所示的阴影部分表示。

图2.3 集合R和S的交运算结果示意图

R∩S


关系并运算比较运算符和逻辑运算符主要用来辅助专门的关系运算。

R

S

R∪S


关系差运算比较运算符和逻辑运算符主要用来辅助专门的关系运算。

R

S

R-S


关系交运算比较运算符和逻辑运算符主要用来辅助专门的关系运算。

R

S

R∩S


广义笛卡尔积比较运算符和逻辑运算符主要用来辅助专门的关系运算。

设两个分别为n 目和m 目的关系R 和S,它们的广义笛卡尔积是一个(n + m)目的元组集合。

元组的前n 列是关系R 的一个元组,后m 列是关系S 的一个元组。若R 有 Kl 个 元组,S 有 K2 个元组,则关系R和关系S 的广义笛卡尔积应当有 Kl × K2 个元组。R 和S的 广义笛卡尔积表示为: R×S={t1,t2|t1∈R∧t2∈S }


广义笛卡儿积比较运算符和逻辑运算符主要用来辅助专门的关系运算。

R×S

R

S


2 4 3
§ 2.4.3比较运算符和逻辑运算符主要用来辅助专门的关系运算。专门的关系运算

1. 选择 (Selection) 运算

选择又称为限制,它是在关系 R 中选择满足条件的

元组,记作:

σF(R)={t|t∈R∧F(t)='真'}

其中 F 表示选择条件,它是一个逻辑表达式,取逻辑

值“真”或“假”。


选取运算比较运算符和逻辑运算符主要用来辅助专门的关系运算。

关系S,作选择运算σA=d(S),其结果如下所示:

S

σA=d(S)

选择条件F(t)为A=d


2.比较运算符和逻辑运算符主要用来辅助专门的关系运算。投影 (Projection) 运算

关系 R 上的投影是从 R 中选择出若干属性列组成新的关系。记作

πA (R)={t[A]| t∈R}

其中 A 为 R 中的属性列集。


投影运算比较运算符和逻辑运算符主要用来辅助专门的关系运算。

关系S,作选择运算πA (S),其结果如下所示:

πA (S)

S


3.比较运算符和逻辑运算符主要用来辅助专门的关系运算。连接(Join) 运算

连接运算又称θ连接运算,连接是从两个关系的笛卡尔积中选取属性中满足一定条件的元组,即通过它可以将两个关系合并成一个大关系。表示为 : R⋈S={t1,t2|t1∈R∧t2∈S∧t1[A]θt2[B]}

AθB


其中比较运算符和逻辑运算符主要用来辅助专门的关系运算。,A 和B 分别为R 和S 上度数相等且可比的属性组,θ是比较运算符。上式表明,连接运算是从R 和S 的广义笛卡尔R × S 中,选取符合AθB 条件的元组,即选择在R 关系 中A 属性组上的值与在S 关系中B 属性组上的值满足比较操作θ的元组。


连接运算举例比较运算符和逻辑运算符主要用来辅助专门的关系运算。

R⋈S

R.B=S.B

R

S


自然连接比较运算符和逻辑运算符主要用来辅助专门的关系运算。

  • 自然连接是θ连接的一个特例。它需要两个关系中具有公共属性, 通过公共属性的相等值进行连接,并且要在结果中去掉重复的属性。

  • 若R 和S 具有相同的属性组B, 则自然连接可表示为:

    R⋈S={t1t2|t1∈R∧t2∈S∧t1[A]=t2[B]}


S T比较运算符和逻辑运算符主要用来辅助专门的关系运算。

自然连接运算举例

T

S


4.比较运算符和逻辑运算符主要用来辅助专门的关系运算。除 (Division) 运算

给定关系 R(X,Y) 和 S (Y,Z), 其中,X,Y, Z 为属性组,R中的Y与S中的Y可以有不相同的属性名, 但必须出自相同的域集。 R 与 S 的除运算,得到一个新的关系P(X), P是R中满足下列条件的元组在X 属性上的投影:元组在 X 上分量值 x 的象集 Yx 包含 S 在 Y 上的投影的集合,表示为:

R÷S ={t1[X]|t1∈R∧πY(S)⊆Yx}

其中,Yx 为x 在R 中的象集。


除运算是同时从行和列角度进行运算比较运算符和逻辑运算符主要用来辅助专门的关系运算。,在进行运算时,将被除关系R 的属性分成两部分: 与除关系相同的部分Y 和不同的部分X 。在被除关系R 中,按X 的值分组,即相同X 值的元组分为一组。除法的运算是求包括除关系中全部Y 值的组,这些组中的X 值将作为 除结果的元组。


除法运算举例比较运算符和逻辑运算符主要用来辅助专门的关系运算。

W=P÷Q

Q

P


关系代数举例比较运算符和逻辑运算符主要用来辅助专门的关系运算。

设有教材图2.6所示的关系S、T、SC、C和D试用关系代数表达式表示下列查询语句:

例2.1 查询所有女教师的信息。

解:

σ Tsex=’女’(T)或σ3=’女’(T)


关系代数举例比较运算符和逻辑运算符主要用来辅助专门的关系运算。

  • 例2.2 找出全体教师的教师号,姓名,性别和职称

  • 解:

  • πTnum,Tname,Tsex,Ttitle(T)

  • 或 π1,2,3,5(T)


关系代数举例比较运算符和逻辑运算符主要用来辅助专门的关系运算。

  • 例2.3.找出系编号为2的男学生的学号和姓名。

  • 解: πSnum,Sname(σSsex=’男’∧Dnum=’2’(S))

  • 例2.4. 找出选修了“数据库系统原理”的学生的学号,姓名和联系电话。

  • 解:

  • πSnum,Sname,Sphone(σCname=’数据库系统原理’(S⋈SC⋈C))


关系代数举例比较运算符和逻辑运算符主要用来辅助专门的关系运算。

  • 例2.5.找出系编号为3选修了“计算机体系结构”的学生的学号,姓名和成绩。

  • 解:

  • πSnum,Sname,Score(σDnum=’3’∧Cname=’计算机体系结构’(S⋈SC⋈C))


关系代数举例比较运算符和逻辑运算符主要用来辅助专门的关系运算。

  • 例2.6 检索至少选修两门课程的学生学号。

  • 解: 

  • 由于关系SC中每个元组表示一个学生学了一门课的情况,所以要求至少选修两门课程的学生学号须进行自身的乘积,再选择,投影。

  • π1 (σ1=4∧2≠5(SC×SC))


关系代数举例比较运算符和逻辑运算符主要用来辅助专门的关系运算。

  • 例2.7 检索选修课程号为1和3的学生学号。

  • 解:

  • πSnum,Cnum(SC)÷πCnum(σCnum=’1’∨Cnum=’3’(C))

  • πSnum(σCnum=’1’(SC))∧πSnum(σCnum=’3’(SC))


关系代数举例比较运算符和逻辑运算符主要用来辅助专门的关系运算。

  • 例2.8. 检索选修课程包含学号为S002的学生所修课程的学生学号。

  • 解:

  • πSnum,Cnum(SC)÷πCnum(σSnum=’S002’ (SC))


小结比较运算符和逻辑运算符主要用来辅助专门的关系运算。

  • 关系数据库是以关系模型为基础的数据库。本章首先介绍了关系模型的三个要素:关系数据结构,关系操作集合和关系完整性约束;接下来详细讨论了关系数据模型的完整性的约束及其作用,结合实例详细介绍了关系代数。


小结比较运算符和逻辑运算符主要用来辅助专门的关系运算。

  • 本章重点应掌握关系模型的特点和关系运算。关系运算包括传统的集合运算(并、差、交等)和专门的关系运算(选择、投影、联接等)。


习 题比较运算符和逻辑运算符主要用来辅助专门的关系运算。

  • 2.1 名词解释

  • 属性、域、元组、候选码、主码、外码、全码、主属性、非主属性

  • 2.2 试述笛卡尔积、等值连接、自然连接三者之间有哪能些差异?

  • 2.3关系模型由哪几个部分组成?


习 题比较运算符和逻辑运算符主要用来辅助专门的关系运算。

  • 2.4为什么关系中的元组没有先后顺序?属性顺序也无关紧要?为什么关系中不允许有重复元组?

  • 2.5外码何时允许空?何时不允许空?


习 题比较运算符和逻辑运算符主要用来辅助专门的关系运算。

2.6已知关系R和S,如下页习题6图所示:

计算:R∪S, R-S, S-R, R∩S,

R×S, П3,2(S), бB<’5’(R),

R⋈S。


关系比较运算符和逻辑运算符主要用来辅助专门的关系运算。R

关系S

习题6图


习 题比较运算符和逻辑运算符主要用来辅助专门的关系运算。

  • 2.7 设教学数据库有下列四个关系模式:

  • 学生关系S(Sno,Sname,Ssex,Sage,Sdept,Sspecial)

  • 课程关系C(Cno,Cname,Ccredit,Cdept,Cprecno,Tno)

  • 教师关系T(Tno,Tname,Tsex,Tspecial)

  • 学习关系SC(Sno,Cno,Grade)


习 题比较运算符和逻辑运算符主要用来辅助专门的关系运算。

  • 上述各属性和含义是:学号(Sno),姓名(Sname),性别(Ssex),年龄(Sage),所在系(Sdept),所在专业(Sspecial),课程号(Cno),课程名(Cname),学分(Ccredit),开课系(Cdept),先修课程号(Cprecno),教师号(Tno),教师名(Tname),教师性别(Tsex),从事专业(Tspecial),成绩(Grade)。


习 题比较运算符和逻辑运算符主要用来辅助专门的关系运算。

  • 试用关系代数表达式表示下列查询语句:

  • (1)检索“自控”和“计算机”专业学生的情况。

  • (2)产生学生成绩表,包括学号,姓名,系,课程名,学分,和成绩。

  • (3)检索不是其他任何课程的先行课程的课程号。

  • (4)检索所有参加了“数据库系统原理”课程考试的学生学号,成绩。


习 题比较运算符和逻辑运算符主要用来辅助专门的关系运算。

  • (5)检索选修了计算机系开设的全部课程的学生学号和姓名。

  • (6)检索选修了“王林”老师所上的全部课程的学生的学号。

  • (7)检索至少选取修两门课程的学生学号和姓名。


ad