• 沒有找到結果。

第二章 关系数据库

N/A
N/A
Protected

Academic year: 2022

Share "第二章 关系数据库"

Copied!
73
0
0

加載中.... (立即查看全文)

全文

(1)

第二章 关系数据库

1)什么是关系数据库?

2)数据模型包含哪些要素?

(2)

本章内容

关系数据模型的三大要素:

1.

数据结构

2.

数据操作

3.

数据的完整性约束条件

(3)

§2.1 关系数据模型概述

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

关系模型:基于数学理论。信息代数、集合论等

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

(4)

关系数据模型 (数据结构)

单一的数据结构

扁平的二维表

以关系的形式来描述现 实世界

实体(学生、课程)

实体间的联系(学生选 课表)

(5)

关系数据模型 (操作)

关系操作特点

集合操作

非过程化

用户不必关心路径

关系数据操作语言

关系代数

关系演算

SQL(结构化的查询语言)

(6)

关系数据模型 (续)

完整性约束

实体完整性

参照完整性

用户定义的完整性

(7)

§2.2 关系数据结构的定义

域是一组具有相同数据类型的值的集

关系模型要求域必须是原子数据的集

(8)

关系数据结构的定义

笛卡儿积

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

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

其中,每一个元素(d1,d2,…,dn)叫作 一个n元组(n-tuple)或简称元组

(9)

关系数据结构的定义

关系

D1×D2×…×Dn的子集叫作在域 D1,D2,…,Dn上的关系,表示为 R(D1,D2,…,Dn,)

关系是笛卡儿积的子集,是一张二 维表,表的每行对应一个元组,列 对应一个域,给每个列取名属性名 以示区别

(10)

关系数据结构的定义

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

候选码的超集为超码

候选码之一可被选作主码(PrimaryKey,PK)。

候选码中的属性称为主属性

(11)

关系数据结构的定义

基本关系(基本表)

实际存在的表

实际存储数据的逻辑表示

查询表

查询结果对应的表

视图表

由基本表或其他视图表导出的表

虚表,无实际存储的物理表相对应

关系

有三

种类

(12)

关系数据结构的定义

基本表的性质

列是同质的,来自同一个域

不同的属性具有不同的属性名,但可以来自同一 个域

列的顺序无关

行的顺序无关

分量(每个元组中的每个属性)必须取原子值

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

(13)

关系数据结构的定义

关系模式

关系模式是采用关系数据模型对数据的描述

关系

是相应关系模式的值(实例)

是相应实体集在某一时刻的快照

(14)

关系数据结构的定义

关系模式

R(U,D,dom,F)

R(U)

R(A1,A2,…,An)

关系

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

关系模式是静态的,稳定的,而关系是动态 的,随时间变化的。

U: 属性名集合

D: U中属性域的集合 Dom: 属性到域的映像 集合

F: 属性间数据的依赖 关系

(15)

关系数据结构的定义

关系数据库

基于关系数据模型的数据库RDB

关系数据库管理系统RDBMS

关系数据库模式

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

关系数据库的值

关系数据库在某一时刻的快照

(16)

§2.3 关系的完整性

对关系的某种约束条件

关系模型的完整性约束

实体完整性

参照完整性

用户定义的完整性

(17)

关系的完整性 ——实体完整性

规则

主属性(组成主码的属性)不能取空值(Null)

NULL

不知道、未提供、短缺

不能简单地认为没有

student(sno,sname,ssex)

不能取NULL

(18)

关系的完整性 ——参照完整性

是关于联系的约束

关系与关系间的引用

引用

被引用

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

专业(专业号,专业名)

引用

(19)

关系的完整性 ——参照完整性

外码(Foreign Key)

设F是基本关系R中的一个或一组属性(但不是R 的码),如果F与基本关系S的主码KS相对应,

则称F是基本关系R的外码。R为参照关系,S为 被参照关系

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

专业(专业号,专业名)

引用 外码 参照关系(从表)

被参照关系(主表)

(20)

关系的完整性 ——参照完整性

参照完整性规则

若属性(或属性组)

F是基本关系R的

外码,它与基本关系 S的主码相对应,则对于R中每个元组在F上的值必须为:

或者取空值(NULL)

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

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

专业(专业号,专业名)

(21)

关系的完整性 ——参照完整性

参照完整性的各种违例情况

从表

插入从表元组,且外键不为 Null

修改从表外键,且不为Null

主表

删除主表元组,其已被参照

修改主表主键,其已被参照

删除主表

(22)

关系的完整性 ——参照完整性

参照可能发生在同一个关系

非主属性引用主码属性

例:学生(学号,姓名,性别,班长)

引用

(23)

关系的完整性 ——

用户定义的完整性

特殊的约束条件

与特定的应用相关

(24)

§2.4 关系代数

属于关系操作的一种

关系代数是一种抽象的查询语言

通过对关系 的运算来表达查询操作

运算对象、结果均为关系

运算

集合运算、关系运算、比较运算、逻辑运算

(25)

关系代数 ——运算符

(26)

关系代数 ——集合运算

集合(Set)

无重复、顺序无关

包(Bag)

可重复、顺序无关

列表(List)

可重复、顺序相关

集合运算

并、交、差、广义笛卡儿积

二目运算

(27)

集合运算 ——并 Union ()

R和S的并,R∪S,是在R或S或两者中的元素的集合

一个元素在并集中只出现一次

R和S必须同类型(属性集相同、次序相同,但属性名 可以不同)

R∪S

(28)

集合运算 ——并 Union ()

(29)

集合运算 ——交 Intersect ( )

R和S的交,R∩S,是在R和S中都存在的元素的集合

一个元素在交集中只出现一次

R和S必须同类型(属性集相同、次序相同,但属性名 可以不同)

R∩S

(30)

集合运算 ——交 Intersect ( )

(31)

集合运算 ——差Minus ( - )

R和S的差,R-S,是在R中而不在S中的元素的集合 。 [ R∩S=R-(R-S) ]

R和S必须同类型(属性集相同、次序相同,但属性名 可以不同)

R - S

(32)

集合运算 ——差Minus ( - )

(33)

集合运算 ——笛卡儿积 ( × )

关系R、S的笛卡儿积是两个关系的元组对的集合所组成 的新关系

R×S:

属性 是R和S的组合( 有重复

元组 是R和S所有元组的可能组合

是R、S的无条件连接 ,使任意两个关系的信息能组合

在一起

(34)

集合运算 ——笛卡儿积 ( × )

(35)

关系代数 ——专门的关系运算

选择、投影、连接、除法

(36)

关系运算 ——选择( σ )

从关系R中选择符合条件的元组构成新的关系

σ

F

(R),表示从R中选择满足条件(使逻辑表达式 F为真)的元组

行的运算

(Where)

(37)

关系运算 ——选择( σ )

例: σ

ssex = ‘男’ AND sdep = ‘IS’

(Student)

(38)

关系运算 ——投影( π )

从关系R中选择若干属性组成新的关系

π

A1,A2,…,An

(R),表示从R中选择属性集

A 1 ,A 2 ,…,A n 组成新的关系

列的运算

(Select)

投影运算的结果中 ,也要 去除可能的重复元组

(39)

关系运算 ——投影( π )

例: π ssex,sage (student)

(40)

关系运算 ——条件连接 ( θ )

从R×S的结果集中,选取在指定的属性集上满足θ条 件的元组,组成新的关系

θ是一个关于属性集的逻辑表达式

R θ S

(41)

关系运算 ——条件连接 ( θ )

(42)

关系运算 ——等值连接 ( θ )

R S

R.B=S.B

(43)

关系运算 ——自然连接( )

从R×S的结果集中,选取在某些 公共属性上具有相 同值 的元组,组成新的关系

R、S的公共属性

属性集的交集(名称及类型相同

公共属性在结果中只出现一次

例: student sc

(44)

关系运算 ——自然连接( )

R S

(45)

关系运算 ——外连接

A B C E

a1 b1 5 3

a1 b2 6 7

a2 b3 8 10

a2 b3 8 2

a2 b4 12 Null

null b5 null 2

R 和 S 的外连接:

左外连接:只保留R关系的悬浮元组 右外连接:只保留S关系的悬浮元组

(46)

关系运算 ——除 (÷)

A B C

a1 b1 c2

a1 b2 c3

a1 b2 c1

a2 b3 c7

a2 b2 c3

a3 b4 c6

a4 b6 c6

(47)

关系代数 ——实例

(48)

关系代数 ——实例1

查询选修了2号课程的学生的学号

课程号、学号←SC表

(49)

关系代数 ——实例1

2号课程的选课情况

σ cno=‘2’ (SC)

(50)

关系代数 ——实例1

选修2号课程的学号

π sno ( σ cno=‘2’ (SC))

(51)

关系代数 ——实例2

列出选修‘数学’课的学生的学号、姓名以及成绩

学号、姓名←Student表

课程名称←Course表

成绩←SC表

Student← SC→Course

sno cno

(52)

关系代数 ——实例2

‘数学’课

σ

cname = ‘数学’

(Course)

(53)

关系代数 ——实例2

(54)

关系代数 ——实例2

‘选修‘数学’课的记录

SC (σ cname = ‘数学’ (Course))

(55)

关系代数 ——实例2

选修‘数学’的学生记录

Student (SC (σ cname = ‘数学’ (Course)))

(56)

关系代数 ——实例2

选修‘数学’的学生的学号、姓名、成绩

π sno,sname,grade Student (SC (σ cname =

‘数学’

(Course)))

(57)

关系代数 ——实例2

(58)

关系代数是用对关系的运算来表示查询

关系演算是用谓词来表达查询 分为 :

元组关系演算语言 : Quel, Aplha

域关系演算语言 : QBE

关系演算

(59)

以元组变量作为谓词演算的基本对象 .

语句格式 :

操作语句 工作空间(表达式): 操作条件

表达式说明要查询的结果,关系名或属性名

操作条件是一个逻辑表达式,表示要满足的条件

元组关系演算语言 ALPHA

(60)

查询信息系中年龄小于 20岁的学生的学号和年龄.

GET W (student.sno, student.sage):

student.sdept=‘IS’ AND student.sage<20

ALPHA 实例

(61)

查询选修了这样课程的学生学号 ,其直接先行课是6号课程

RANGE course CX

GET W(sc.sno): 存在CX (CX.cno=sc.cno AND CX.peno=‘6’ )

ALPHA 实例: 使用元组变量

元组变量的好处: 简化关系名, 可以使用量词 存在量词,全称量词: 表达能力扩展

(62)

查询选修了所有课程的学生名字

RANGE course cx sc scx

GET W(student.sname): 任意cx 存在

scx(scx.sno=student.sno AND scx.cno=cx.cno)

ALPHA 实例: 使用全称量词

(63)

查询 90分以上学生名字和课程名字

RANGE sc scx

GET W (student.sname, course.cname): 存在

scx(scx.grade>=90 AND scx.sno=student.sno AND course.cno=SCX.cno)

ALPHA 实例: 多个关系的查询

(64)

查询信息系学生的平均年龄

Get W (AVG(student.sage): student.sdept=‘IS’)

标准函数库供用户选用

聚集函数有 :count, sum, max,min,avg

ALPHA 实例: 聚集函数

(65)

以元组变量的分量作为谓词的变元。

求计算机系年龄大于 19岁的学生学号。

域演算语言 QBE : 与条件

student sno sname ssex sage sdept

P.95001 >19 CS

查询条件 操作命令

示例元素下划线

(66)

求计算机系或者年龄大于 19岁的学生学号。

域演算语言 QBE:或条件

student sno sname ssex sage sdept

P.95001 CS

student sno sname ssex sage sdept

P.95002 >19

(67)

查询选修 1号课程的学生姓名

域演算语言 QBE: 多个关系查询

Student sno sname ssex sage sdept 95001 P. XYZ

SC sno cno Grade

95001 1

(68)

查询信息系学生的平均年龄

域演算语言 QBE: 聚集函数

student sno sname ssex sage sdept p.AVG.ALL IS

(69)

课堂作业

用关系代数 ,alpha, QBE表示下述查询:

S(sno,sname,status,city) 供应商 P(pno,pname,color,weight) 零件 J(jno,jname,city) 工程项目

SPJ(sno,pno,jno,qty)

求供应工程

j1

红色零件的供应商代码(sno)

求没有使用天津供应商生产的红色零件的工程项目代码(jno)

(70)
(71)

求没有使用天津供应商生产的红色零件的工程项目代码(jno)

第一步:查找使用天津供应商生产的红色零件的工程项目代码 Π jno ( Ϭ city=‘天津’ (S) SPJ Ϭ color=‘red’ (P) )

第二步:没有使用

Π jno (J) - Π jno ( Ϭ city=‘天津’(S) SPJ Ϭ color=‘red’ (P) )

2题 关系代数

(72)

2题 Alpha 答案

(73)

第2题 QBE 答案:

參考文獻

相關文件

第一篇 國際安全與軍事情勢 第一章 國際安全環境 第二章 全球軍事情勢 第三章 亞洲軍事情勢 第四章 中共軍事情勢.. 第二篇

應用統計學 林惠玲 陳正倉著 雙葉書廊發行

[r]

(11)※群組化物件(使用 Flash 工具列所繪製之物件):Ctrl-G 或功能

and Peterson, G., “Convective Heat Transfer and Flow Friction for Water Flow in Microchannel Structures,” Int. Heat and Mass

本篇論文的後面章節,便對 ERP-PBCC 所產生四種速率的兩個編碼器做深入 的研究。第二章前半段詳細介紹 ERP-PBCC

3.正弦函数y=Asin(ωx+φ)的图象之间的变换关系是学生最熟悉的一种伸缩变换.教 材从学生最熟悉的这一内容入手 ,分别比较了函数y=sin2x 和y=sinx 的图象之间的关

为此, 我们需要建立函 数的差商与函数的导数间的基本关系式, 这些关系式称为“微分学中值定理”...