Chapter 2: Relational Model

Download Report

Transcript Chapter 2: Relational Model

Chapter 2: Relational Model
Database System Concepts, 5th Ed.
©Silberschatz, Korth and Sudarshan
See www.db-book.com for conditions on re-use
Chapter 2: Relational Model
 Structure of Relational Databases
 Fundamental Relational-Algebra-Operations
学习集合论、代数系统和形式逻辑比较枯燥,远不如
直接学习SQL来得轻松自如,但如果想成为专业级的数据
库用户,还必须从理论学起。
2.2
©database technology and application
Structure of Relational Databases
 IBM cooperation E.F.Codd
 E.F.Codd, “A Relational Model of Data for Large
Shared Data Banks”, 《Communication of the ACM》
,1970
 获得图灵奖(计算机的诺贝尔奖)
 之后,提出了关系代数和关系演算的概念
 1972年提出了关系的第一、第二、第三范式
 1974年提出了关系的BC范式
 80年代后,关系数据库系统成为最重要、最流行的数据库系
统。
2.3
©database technology and application
Relational DBMS
 典型实验系统
 System
R
 University
INGRES
 典型商用系统
 ORACLE
 SYBASE
 INFORMIX
 DB2
 INGRES
2.4
©database technology and application
关系模型概述
 关系数据库系统
 是支持关系模型的数据库系统
 关系模型的组成
 关系数据结构
 关系操作集合
 关系完整性约束
2.5
©database technology and application
Relational data structure(关系数据结构)
 Relationship(单一的数据结构----
关系)
 现实世界的实体以及实体间的各
种联系均用关系来表示
 Table(数据的逻辑结构----二维表)
 从用户角度,关系模型中数据的
逻辑结构是一张二维表。
2.6
©database technology and application
关系操作集合
 Data manipulation
 常用的关系操作
 关系操作的特点
 Data manipulation language
 关系数据语言的种类
 关系数据语言的特点
2.7
©database technology and application
关系操作集合(续)
 Operator(常用的关系操作)
 Query(查询)
Select(选择)、project(投影)、
join( 连 接 ) 、 除 、 union( 并 ) 、
intersect(交)、差
 数据更新
Insert( 插 入 ) 、 delete( 删 除 ) 、
modify(修改)
2.8
©database technology and application
关系操作集合(续)
 关系操作的特点
 集合操作方式,即操作的对象和
结果都是集合。
非关系数据模型的数据操作方
式:一次一记录
文件系统的数据操作方式
2.9
©database technology and application
关系操作集合(续)
 关系数据语言的种类
 关系代数语言
用对关系的运算来表达查询要
求
典型代表:ISBL
2.10
©database technology and application
关系操作集合(续)
 关系数据语言的种类(续)

关系演算语言:用谓词来表达查询要求
元组关系演算语言
– 谓词变元的基本对象是元组变量
– 典型代表:APLHA, QUEL
域关系演算语言
– 谓词变元的基本对象是域变量
– 典型代表:QBE

SQL具有关系代数和关系演算双重特点的语言
典型代表:SQL
2.11
©database technology and application
关系操作集合(续)
 关系数据语言的特点
 关系语言是一种高度非过程化的语言
存取路径的选择由DBMS的优化机制来
完成
用户不必用循环结构就可以完成数据操
作
 能够嵌入高级语言中使用
 关系代数、元组关系演算和域关系演算三
种语言在表达能力上完全等价
2.12
©database technology and application
Basic Structure of relation)
(关系的基本结构)
 Formally, given sets D1, D2, …. Dn
a relation r is a subset of
D1 x D2 x … x Dn
Thus, a relation is a set of n-tuples (a1, a2, …, an) where each ai  Di
 Example: If
customer_name = {Jones, Smith, Curry, Lindsay}
customer_street = {Main, North, Park}
customer_city
= {Harrison, Rye, Pittsfield}
Then r = { (Jones, Main, Harrison),
(Smith, North, Rye),
(Curry, North, Rye),
(Lindsay, Park, Pittsfield) }
is a relation over
(a set of)
customer_name x customer_street x customer_city
2.13
©database technology and application
Relationship(关系)
D1×D2×…×Dn的子集叫作在域D1,D2,…,
Dn上的关系,表示为
R(D1,D2,…,Dn)
R:关系名
n:关系的目或度(Degree)
Attribute(属性)
关系中不同列可以对应相同的域,为了加以
区分,必须对每列起一个名字,称为属性(
Attribute)。
n目关系必有n个属性。
2.14
©database technology and application
Relation Schema
 A1, A2, … , An are attributes
 R = (A1, A2, … , An ) is a relation schema
Example:
Customer_schema = (customer_name, customer_street,
customer_city )
 r(R ) is a relation on the relation schema R
Example:
customer (Customer_schema)
2.15
©database technology and application
Relation Instance
 The current values ( relation instance ) of a relation are
specified by a table ( snapshot at a given instant time )
 An element t of r is a tuple, represented by a row in a table
attributes
(or columns)
customer_name customer_street
Jones
Smith
Curry
Lindsay
Main
North
North
Park
customer_city
Harrison
Rye
Rye
Pittsfield
tuples
(or rows)
customer
2.16
©database technology and application
Example of a Relation
Table/
Relation/
EntitySet
Column/
Attribute/
Attribute
Row/
Tuple/
Entity
2.17
©database technology and application
Basic concepts(与关系相关概念表述 )
 1.域(Domain)
 2.笛卡尔积(Cartesian Product)
 3.关系的表现形式
 4.关系的性质
2.18
©database technology and application
⒈ 域(Domain)
 A domain describes the set of possible values
for a given attribute
 域描写给定属性可能数值的集合。例:
Integer(整数)
Real(实数)
Between;
Greater and Smaller (介于某个取
值范围的整数)
Char(长度指定长度的字符串集合)
Bool{‘男’,‘女’}
Between(介于某个取值范围的日期)
2.19
©database technology and application
2. 笛卡尔积(Cartesian Product)
 关系数据库使用数学方法来处理数据库中的数据
 笛卡尔积
给定一组域D1,D2,…,Dn,则D1,D2,…,Dn的
笛卡尔积为:
D1×D2×…×Dn={(d1,d2,…,dn)|diDi,i
=1,2,…,n}
 所有域的所有取值的一个组合
 不能重复
2.20
©database technology and application
笛卡尔积(续)
 元组(Tuple)
 笛卡尔积中每一个元素( d1, d2,…, dn )
叫作一个n元组(n-tuple)或简称元组。
 分量(Component)
 笛卡尔积元素(d1,d2,…,dn)中的每一
个值di叫作一个分量。
2.21
©database technology and application
Example: 笛卡尔积(续)
例:给出三个域:
D1=SUPERVISOR ={ 张清玫,刘逸 }
D2=SPECIALITY={计算机专业,信息专业}
D3=POSTGRADUATE={李勇,刘晨,王敏}
则D1,D2,D3的笛卡尔积为:
D1×D2×D3 =
{(张清玫,计算机专业,李勇),(张清玫,计算机专业,刘晨),
(张清玫,计算机专业,王敏),(张清玫,信息专业,李勇),
(张清玫,信息专业,刘晨),(张清玫,信息专业,王敏),
(刘逸,计算机专业,李勇),(刘逸,计算机专业,刘晨),
(刘逸,计算机专业,王敏),(刘逸,信息专业,李勇),
(刘逸,信息专业,刘晨),(刘逸,信息专业,王敏) }
2.22
©database technology and application
笛卡尔积(续)
 笛卡尔积的表示方法

笛卡尔积可表示为一个二维表。表中的每行对应
一个元组,表中的每列对应一个域。
D 1,D 2, D 3 的笛卡尔积
SUPERVISOR
张清玫
张清玫
张清玫
张清玫
张清玫
张清玫
刘逸
刘逸
刘逸
刘逸
刘逸
刘逸
SPECIALITY
计算机专业
计算机专业
计算机专业
信息专业
信息专业
信息专业
计算机专业
计算机专业
计算机专业
信息专业
信息专业
信息专业
2.23
POSTGRADUATE
李勇
刘晨
王敏
李勇
刘晨
王敏
李勇
刘晨
王敏
李勇
刘晨
王敏
©database technology and application
笛卡尔积(续)
 基数(Cardinal number)

若Di(i=1,2,…,n)为有限集,其基数为mi(i=1,2,…,n)
,则D1×D2×…×Dn的基数M为:
n
M   mi
i 1
 在上例中,基数:2×2×3=12,即D1×D2×D3共有2×2×3=12个元
组。
 类似的例子有,如果A表示某学校学生的集合,B表示该学校所有课
程的集合,则A与B的笛卡尔积表示所有可能的选课情况。
 笛卡尔积在实战中没有太多的意义,但对于数据库系统来说,笛卡
尔积的意义重大,因为所有的数据库查询的操作对象都是在现有的
关系表之上采用有限的笛卡尔积之上进行的,都是在笛卡尔积的结
果上进行选择运算(select)得到的。
2.24
©database technology and application
关系(续)
关系的表示
关系也是一个二维表,表的每行对应一个元组,表的每列
对应一个域。
表 SAP 关系
SUPERVISOR
张清玫
张清玫
刘逸
SPECIALITY
信息专业
信息专业
信息专业
2.25
POSTGRADUATE
李勇
刘晨
王敏
©database technology and application
基本关系的性质
① 列是同质的(Homogeneous)
每一列中的分量是同一类型的数据,
来自同一个域。
② 不同的列可出自同一个域
其中的每一列称为一个属性
不同的属性要给予不同的属性名
2.26
©database technology and application
基本关系的性质(续)
③ 列的顺序无所谓
列的次序可以任意交换
遵循这一性质的数据库产品(如ORACLE),
增加新属性时,永远是插至最后一列。
但也有许多关系数据库产品没有遵循这一
性质,例如FoxPro仍然区分了属性顺序。
(Order of tuples is irrelevant )
2.27
©database technology and application
基本关系的性质(续)
④ 任意两个元组不能完全相同
由笛卡尔积的性质决定,但许多关系数据库产品
没有遵循这一性质。
例如:
Oracle,FoxPro等都允许关系表中存在两个完
全相同的元组,除非用户特别定义了相应的约束条
件。
2.28
©database technology and application
基本关系的性质(续)
⑤ 行的顺序无所谓
行的次序可以任意交换
遵循这一性质的数据库产品(如ORACLE),
插入一个元组时永远插至最后一行
但也有许多关系数据库产品没有遵循这一性
质,例如FoxPro仍然区分了元组的顺序
2.29
©database technology and application
基本关系的性质(续)
⑥ 分量必须取原子值
每一个分量都必须是不可分的数据项。
这是规范条件中最基本的一条。
表 2.3 非规范化关系
SUPERVISOR
张清玫
刘逸
SPECIALITY
信息专业
信息专业
2.30
POSTGRADUATE
PG1
PG2
李勇
王敏
刘晨
©database technology and application
关系数据库完整性
1、实体完整性(Entity Integrity)
 实体完整性是指主关系键的值不能为空或部分
为空。
2、参照完整性(Referential integrity)
 如果关系R2的外部关系键X与关系R1的主关系
键相符,则X的每个值或者等于R1中主关系键的
某一个值,或者取空值。
3、域完整性
 域完整性是针对某一具体关系数据库的约束条
件。它反映某一具体应用所涉及的数据必须满
足的语义要求。
2.31
©database technology and application
Keys
 Let K  R
 K is a superkey of R if values for K are sufficient to identify a
unique tuple of each possible relation r(R)
 by “possible r ” we mean a relation r that could exist in
the enterprise we are modeling.
 Example: {customer_name, customer_street } and
{customer_name }
are both superkeys of Customer, if no two customers can
possibly have the same name.
 K is a candidate key if K is minimal
Example: {customer_name} is a candidate key for Customer,
since it is a superkey (assuming no two customers can
possibly have the same name), and no subset of it is a
superkey.
 Primary Key
2.32
©database technology and application
关系(续)
码
候选码(Candidate key)
若关系中的某一属性组的值能唯一地标识
一个元组,则称该属性组为候选码
在最简单的情况下,候选码只包含一个属性。
称为全码(All-key)
在最极端的情况下,关系模式的所有属性组
是这个关系模式的候选码,称为全码(Allkey)
2.33
©database technology and application
关系(续)
码(续)
主码
若一个关系有多个候选码,则选定其中一个
为主码(Primary key)
主码的诸属性称为主属性(Prime attribute)。
不包含在任何侯选码中的属性称为非码属性
(Non-key attribute)
2.34
©database technology and application
summary
关系(Relation):一个关系对应一张二维表,每个关系有一个关
系名。在SQL Server中,一个关系就是一个表文件。

元组(Tuple):二维表中水平方向的一行,有时也叫做一条记录。
属性(Attribute):表格中的一列,相当于记录中的一个字段。
关键字(Key):可唯一标识元组的属性或属性集,也称为关系键或
主码。
域(Domain):属性的取值范围,如性别的域是(男,女)。
分量:每一行对应的列的属性值,即元组中的一个属性值。
关系模式:对关系的描述,一般表示为:关系名(属性1,属性2,
……属性n)。
2.35
©database technology and application
Database

一个数据库包括很多关系
(A database consists of multiple relations)

一企业的信息可以被分为很多关系来表达。如银行业务,有账号、存款关系和顾客
(Information about an enterprise is broken up into parts, with each relation
storing one part of the information
account : stores information about accounts
depositor : stores information about which customer
owns which account
customer : stores information about customers)

信息以单一表的方式进行存储。
(Storing all information as a single relation such as
bank ( account_number, balance, customer_name, ... )
results in

repetition of information ( e.g., two customers own an account)

the need for null values (e.g., represent a customer without an account)
2.36
©database technology and application
Summary
 单一的数据结构----关系
 现实世界的实体以及实体间的各种联系均
用关系来表示
 数据的逻辑结构----二维表
 从用户角度,关系模型中数据的逻辑结构
是一张二维表。
2.37
©database technology and application
Relational Algebra
 Procedural language
 Six basic operators

select: 

project: 

union: 

set difference: –

Cartesian product: x

rename: 
 The operators take one or two relations as inputs and produce a
new relation as a result.
(关系代数是一种抽象的查询语言。从数学的角度来看,关系是一个集
合,关系的元组是集合的元素。因此,关系代数包括集合运算:交、
并、差、乘,还有关系专有的运算:选择、投影、连接、除。 )
2.38
©database technology and application
Union Operation(并)
 Notation: r  s
 Defined as:
r  s = { t | t  r or t  s }
 For r  s to be valid.
1. r, s must have the same arity (同元,same number of attributes)
2. The attribute domains must be compatible (example: 2nd column
of r deals with the same type of values as does the 2nd column of s)
 Example: to find all customers with either an account or a loan
customer_name (depositor)  customer_name (borrower)
并(union)
设R和S是两个关系,它们的并运算是将两个关系中的所有元
组构成一个新关系,即由属于R或属于S的元素组成,该关系用
R∪S,也可以记做R+S。
2.39
©database technology and application
Union Operation – Example
 Relations r, s:
A
B
A
B

1

2

2

3

1
s
r
 r  s:
A
B

1

2

1

3
2.40
©database technology and application
【例】有在职职工和离退修职工两个表,若需要所有
职工的表,可以利用并运算实现。
在职职工表R
工号
姓名
性别
状态
106001
张春来
男
1
103026
马宏明
男
1
105008
王红
女
1
离退修职工表S
工号
姓名
性别
状态
106008
李建新
男
0
104012
王红
女
0
2.41
©database technology and application
新关系R∪S
工号
姓名
性别
状态
106001
张春来
男
1
103026
马宏明
男
1
105008
王红
女
1
106008
李建新
男
0
104012
王红
女
0
2.42
©database technology and application
Set Difference Operation – Example
 Relations r, s:
A
B
A
B

1

2

2

3

1
s
r
 r – s:
A
B

1

1
2.43
©database technology and application
Set Difference Operation(差)
 Notation r – s
 Defined as:
r – s = { t | t  r and t  s }
 Set differences must be taken between compatible
relations.

r and s must have the same arity

attribute domains of r and s must be compatible
2.44
©database technology and application
 差(difference)
设R和S是两个关系,R和S的差运算是由属于R而不属
于S的所有元组构成新关系,也就是从关系R中减去关系S
中的元组,该关系用R-S。差运算也要求两个关系对应属
性的性质(属性名、属性的域等)必须一致。
【例】某商店有本店商品表,接到不合格商品表后,需
要将本店中的不合格商品去掉。可以利用差运算实现。
本店商品表R
品牌
名称
厂家
106001
奶粉
天南
103026
奶粉
地北
205008
白糖
南山
204045
白糖
北山
302034
食盐
西山
2.45
©database technology and application
不合格商品表S
品牌
名称
厂家
103026
奶粉
地北
4023037
火腿
西山
204045
白糖
北山
新关系R-S
品牌
名称
厂家
106001
奶粉
天南
205008
白糖
南山
302034
食盐
西山
2.46
©database technology and application
纳税人的例子——差
 两个关系的减法操作,假设关系payer存放着
全部的纳税人信息,而Profile存放着已经申报
税款的纳税人信息,两个关系的模式完全相同
,都只有nsrsbh和nsrmc两个字段,则运算
payer-profile能求出还没有进行申报的纳税人
。
2.47
©database technology and application
 交(intersection)
设R和S是两个关系,R和S的交运算是由属于R并且也属于S的
所有元组构成的一个新关系,即由关系R和关系S中公共的元组构
成的新关系。该关系用R∩S。交运算也要求两个关系对应属性的
性质(属性名、属性的域等)必须一致。
在前例中,找出本店内不合格的商品,可以用交运算实现。
新关系R∩S
品牌
名称
厂家
103026
奶粉
地北
204045
白糖
北山
2.48
©database technology and application

乘(product)
设R和S是两个关系,R和S的乘运算是一个新关系(记为
R×S)结果是两个关系中所有元组按一定规则组合而成。关系R
有m个属性,关系S有n个属性,则R×S由(m+n)个属性;R有i个
元组,S有j个元组,则R×S有(i×j)个元组;每个元组的前m
个属性是R的一个元组,后n个属性是S的一个元组。
说明:两个关系(集合)的乘运算,在集合论中也称为广义
笛卡尔积。所以关系的乘运算也称为广义笛卡尔积。
【例】现有学生表、必修课程表,每个学生必须学习所有必修课
程,要求形成选课表。可以利用关系乘运算实现。
2.49
©database technology and application
表
学生表R
学号
姓名
0406001
王晓立
0406002
张大卫
表 必修课程表S
课程号
课程名
学分
C601
数据库
3
C602
操作系统
2
C603
数学
5
2.50
©database technology and application
表 新关系R×S
学号
姓名
课程号
课程名
学分
0406001
王晓立
C601
数据库
3
0406001
王晓立
C602
操作系统
2
0406001
王晓立
C603
数学
5
0406002
张大卫
C601
数据库
3
0406002
张大卫
C602
操作系统
2
0406002
张大卫
C603
数学
5
2.51
©database technology and application
Select Operation – Example
 Relation r
 A=B ^ D > 5 (r)
A
B
C
D


1
7


5
7


12
3


23 10
A
B
C
D


1
7


23 10
2.52
关系R的选择运算
是从关系R中选择满足
指定条件(用F表示)
的元组构成的新关系。
换言之,选择运算的结
果是一个表的水平方向
的子集。
关系R的选择运算记
为:σF(R)。其中,
F是包括属性名的逻辑
表达式。
©database technology and application
Select Operation
 Notation:  p(r)
 p is called the selection predicate
 Defined as:
p(r) = {t | t  r and p(t)}
Where p is a formula in propositional calculus consisting of
terms connected by :  (and),  (or),  (not)
Each term is one of:
<attribute> op <attribute> or <constant>
where op is one of: =, , >, . <. 
 Example of selection:
 branch_name=“Perryridge”(account)
2.53
©database technology and application
 选择(selection)
关系R的选择运算记为:σF(R)。其中,F是包括属性名的逻辑表
达式,运算符有算术比较运算符:<,≤,>,≥,=,≠,和逻辑运
算符:┐,∨,∧(非、或、与)。
【例】 ① 在表中求出学分大于等于3的课程信息。
表2-13
σ学分≥3( R∪S)
课程号
课程名
学分
C601
数据库
3
C603
数学
5
2.54
©database technology and application
② 在表中求所有在职男职工名单。
σ性别=‘男’∧状态=1( R∪S)
工号
姓名
性别
状态
106001
张春来
男
1
103026
马宏明
男
1
2.55
©database technology and application
Project Operation
 Notation:

A1,A2 ,,Ak
(r )
where A1, A2 are attribute names and r is a relation name.
 The result is defined as the relation of k columns obtained
by erasing the columns that are not listed
 Duplicate rows removed from result, since relations are sets
 Example: To eliminate the branch_name attribute of account
account_number, balance (account)
关系R的投影运算是从R中选择某些属性的所有值组成
的新关系。换言之,投影运算的结果是一个表的垂直方向
的子集。
2.56
©database technology and application
Project Operation – Example
 Relation r:
A,C (r)
A
B
C

10
1

20
1

30
1

40
2
A
C
A
C

1

1

1

1

1

2

2
=
2.57
©database technology and application
 投影(projection)
关系R的投影运算记为:πA(R)。其中,A为R的一组属性列。
投影的结果将消除重复的元组。
【例】在表2-5所示的关系R∪S中
① 列出所有职工的名单,可以通过投影运算实现;
π姓名(R∪S)
姓名
张春来
马宏明
王红
李建新
2.58
©database technology and application
②
列出职工姓名及其任职状态,可以通过投影运算实现。
π姓名,状态(R∪S)
姓名
状态
张春来
1
马宏明
1
王红
1
李建新
0
王红
0
π姓名(R∪S)可记为π2(R∪S),π姓名,状态(R∪S)可记为π2,4(R∪S)。
注意:π姓名(R∪S)运算的结果将同名的两个“王红”去掉重复,只保留一个
。
2.59
©database technology and application
投影的操作说明
 投影操作是对一个给定的关系去掉若干属性,对一个
k元组的关系R来说,如果我们想留下第i1,i2,i3 …
im,(m<=k)个属性,则我们可以把不在这些属性
列表里的属性(字段)去掉。投影运算可以表示为
πi1,i2,i3 … im(R)。
 投影运算可以使我们:

①只得到我们必需的信息,忽略掉冗余的信息。

②让使用关系的用户按照自己希望的顺序重新排列
元组的顺序。

③ 投影运算结束后,还会去掉重复的元组,因为
理论上的数据库认为世界上不会存在完全一模一样
的两个实体。
2.60
©database technology and application
练习
 对于关系Ra(id,aName)和Rb(id,bName),如果我们的
查询要求是如果从关系Ra中检索出那些id号不在Rb中
的元组集,则如何去写查询语句?
 这个问题我们用关系代数可以比较容易地写出查询公
式:π1,2(δ$1=$3(Ra×(πid(Ra)- πid(Rb))))
 这个公式的大致计算过程可以表述如下:首先把关系
Ra对id字段作投影,然后把关系Rb对id字段作投影,
再求Ra的id集和Rb的id集的差集,求出的结果就是Ra
的id不在Rb中的那些,我们称之为W,然后用Ra去和
W作笛卡尔积,再从笛卡尔积的结果中投影出属于Ra
的字段。
2.61
©database technology and application
 除(divide)
设关系R的属性可以分成互不相交的两组,用X、Y表示(X∩Y
为空集,X∪Y为R的全部属性),则关系R可以表示为:R(X,Y)。
设R(X,Y)和S(Y,Z)是两个关系,其中R中的Y和S中的Y可以有不
同的属性名,但必须出自相同的域。R与S的除运算是一个新关系
P(X)(记为R÷S),它的属性为属性组X,设S在Y上的投影πy(S)有
j个元组,R÷S由所有满足以下条件的元素构成:
(1) R中存在若干元组构成的子集R’(也是关系),该关系在Y上
的投影πy(R’)包含关系S在Y上的投影πy(S);
(2) πx(R’)中(去掉重复后)只有一个元素x,则x是R÷S中的
一个元素(元组)。
2.62
©database technology and application
Division Operation – Example
 Relations r, s:
 r  s:
A
A
B
B











1
2
3
1
1
1
3
4
6
1
2
1
2
s
r


2.63
©database technology and application
Another Division Example
 Relations r, s:
A
B
C
D
E
D
E








a
a
a
a
a
a
a
a








a
a
b
a
b
a
b
b
1
1
1
1
3
1
1
1
a
b
1
1
s
r
 r  s:
A
B
C


a
a


2.64
©database technology and application
Division Operation (Cont.)


Property

Let q = r  s

Then q is the largest relation satisfying q x s  r
Definition in terms of the basic algebra operation
Let r(R) and s(S) be relations, and let S  R
r  s = R-S (r ) – R-S ( ( R-S (r ) x s ) – R-S,S(r ))
To see why

R-S,S (r) simply reorders attributes of r

R-S (R-S (r ) x s ) – R-S,S(r) ) gives those tuples t in
R-S (r ) such that for some tuple u  s, tu  r.
2.65
©database technology and application
【例】已知学生选课表R,要找出同时选修课号为C601、C605两门课程的
学生的学号。指定的课程号和对应课程名构成的关系记为S,则该问题可
以用R÷S表示。
S
学号
课程号
课程号
课程名
0406001
C601
C601
数据库
选课表
0406001
C602
C605
软件工程
R
0406001
C605
0406002
C602
0406002
C605
0406002
C603
0406003
C605
0406003
C601
R÷S
学号
0406001
0406003
2.66
©database technology and application
(1) 每本图书的编号和书名;
解: R1=π编号,书名(books)
编号
书名
F12.245
计算机文化基础
F33.33
数据结构实用教程
G22.12
Visual Basic实用教程
G11.22
Java程序设计实用教程
F23.55
数据结构(C语言版)
G11.11
C语言程序设计
G12.08
C语言程序设计
G12.10
C语言程序设计
2.67
R1
©database technology and application
(2) 每位读者的编号和所借图书的书名;
解: R2=π
读者编号,书名
(borrowinf
books)
图书编号=编号
R2
读者编号
书名
2004060002
计算机文化基础
2002060328
数据结构(C语言版)
2004160426
C语言程序设计
2002060328
C语言程序设计
2002060328
Java程序设计实用教程
2004160426
C语言程序设计
2.68
©database technology and application
(3) 2004年8月以前的图书未还情况读者编号和所借图书书名;
解: R3=π读者编号,书名(σ借期≤’2004-08-01’∧还期=NULL(borrowinf )
books)
图书编号=编号
R3
读者编号
2004060002
书名
计算机文化基础
2.69
©database technology and application
(4) 编号为2002060328的读者所借图书信息。
解: R4=σ读者编号=’2002060328’ (borrowinf
books )
图书编号 = 编号
R4
读者编号
图书编号
借期
2002060328
F23.55
2004-5-26
2002060328
G12.08
2002060328
G11.22
还期
2004-12-22
书名
作者
出版社
出版日期
数据结构(C语言版)
马志刚
青山
2004.7
2004-8-26
C语言程序设计
梁晓峰
青山
2004.10
2004-9-01
Java程序设计实用教程
张大海
碧水
2004.7
2.70
定价
28.00
20.80
©database technology and application
一个关系代数的演算式来说,我
们实际上是在多个关系反复地进
行笛卡尔积的运算结果上的操作
。
有了笛卡尔积、并集、差集、投
影和选择运算,基本上我们的普
通的数据处理的需求都可以得到
满足。
2.71
©database technology and application
Natural-Join Operation

Notation: r
s
 Let r and s be relations on schemas R and S respectively.
Then, r
s is a relation on schema R  S obtained as follows:

Consider each pair of tuples tr from r and ts from s.

If tr and ts have the same value on each of the attributes in R  S,
add a tuple t to the result, where

t has the same value as tr on r

t has the same value as ts on s
 Example:
R = (A, B, C, D)
S = (E, B, D)

Result schema = (A, B, C, D, E)

r
s is defined as:
r.A, r.B, r.C, r.D, s.E (r.B = s.B  r.D = s.D (r x s))
2.72
©database technology and application
Natural Join Operation – Example
 Relations r, s:
A
B
C
D
B
D
E





1
2
4
1
2





a
a
b
a
b
1
3
1
2
3
a
a
a
b
b





r
 r
s
s
A
B
C
D
E





1
1
1
1
2





a
a
a
a
b





2.73
©database technology and application
 连接(join)
关系R与关系S的连接运算是从两个关系的广义笛卡尔积中选取
属性间满足一定条件的元组形成一个新关系。记作:
S
R
AθB
其中:A为包含R中的属性的表达式
B为包含S中属性的表达式
θ通常为关系比较符。

等值连接(equal join)
θ为“=”的连接运算称为等值连接。关系R和S的等值连
接是从R和S的广义笛卡尔积R×S中选取A与B等值的那些元组,
形成的关系。
2.74
©database technology and application

自然连接(natural join)
关系R和S的自然连接是一种特殊的等值连接,它要求关系R和S
中进行比较的分量必须是相同的属性组的一种连接,并且在结果中
把重复的属性列去掉(只保留一个)。
自然连接记为:
S
R
一般的连接运算是从行的角度进行的。但自然连接还需要取消重
复列,所以自然连接是同时从行和列的角度进行运算。
自然连接是构造新关系的有效方法,是关系代数中常用的一种运
算,在关系数据库理论中起着重要作用。利用投影、选择和自然连
接运算可以任意地分解和构造关系。
一般地,自然连接使用在R和S有公共属性的情况中。如果两个关
系没有公共属性,那么它们的自然连接就转化为广义笛卡尔积。
2.75
©database technology and application
【例】设图书借阅信息如表2-15所示,图书信息如表2-16 所示,
求各读者借阅图书的信息。
表2-15 借阅信息表borrowinf
读者编号
图书编号
借期
2004060002
F12.245
2004-6-29
2002060328
F23.55
2004-5-26
2004160426
G11.11
2004-10-21
2002060328
G12.08
2004-8-26
2002060328
G11.22
2004-9-01
2004160426
G12.10
2004-9-14
2.76
还期
2004-12-22
2004-11-08
©database technology and application
表 图书信息表books
书名
作者
F12.245
计算机文化基础
刘凌志
青山
2002.5
21.80
F33.33
数据结构实用教程
王云晓
蓝天
2002.5
22.00
G22.12
Visual Basic实用教程
梁晓峰
碧水
2003.10
28.00
G11.22
Java程序设计实用教程
张大海
碧水
2004.7
20.80
F23.55
数据结构(C语言版)
马志刚
青山
2004.7
24.50
G11.11
C语言程序设计
张大海
蓝天
2004.8
26.30
G12.08
C语言程序设计
梁晓峰
青山
2004.10
22.00
G12.10
C语言程序设计
梁晓峰
青山
2004.10
22.00
编号
2.77
出版社
出版日期
定价
©database technology and application
求各读者借阅图书的信息,可通过等值连接实现:
borrowinf
books
图书编号 = 编号
结果为:
读者编号
图书编号
借期
2004060002
F12.245
2004-6-29
2002060328
F23.55
2004-5-26
2004160426
G11.11
2002060328
还期
书名
作者
出版社
出版日期
定价
计算机文化基础
刘凌志
青山
2002.5
21.80
数据结构(C语言版)
马志刚
青山
2004.7
28.00
2004-10-21
C语言程序设计
张大海
蓝天
2004.8
G12.08
2004-8-26
C语言程序设计
梁晓峰
青山
2004.10
2002060328
G11.22
2004-9-01
Java程序设计实用教程
张大海
碧水
2004.7
20.80
2004160426
G12.10
2004-9-14
C语言程序设计
梁晓峰
青山
2004.10
22.00
2004-12-22
2004-11-08
2.78
©database technology and application
Division Operation
 Notation:
rs
 Suited to queries that include the phrase “for all”.
 Let r and s be relations on schemas R and S respectively
where

R = (A1, …, Am , B1, …, Bn )

S = (B1, …, Bn)
The result of r  s is a relation on schema
R – S = (A1, …, Am)
r  s = { t | t   R-S (r)   u  s ( tu  r ) }
Where tu means the concatenation of tuples t and u to
produce a single tuple
2.79
©database technology and application
Query Languages(查询语言)
 Language in which user requests information from
the database.
 Categories of languages

Procedural

Non-procedural, or declarative
 “Pure” languages:

Relational algebra

Tuple relational calculus(元组关系演算)

Domain relational calculus(域关系演算)
 Pure languages form underlying basis of query
languages that people use.
2.80
©database technology and application