第 5 章 关系数据模型

53
第 5 第 第第第第第第 第第第 第第第第 第第第第第第第第 [email protected]

Upload: prescott-west

Post on 15-Mar-2016

167 views

Category:

Documents


6 download

DESCRIPTION

第 5 章 关系数据模型. 刘红岩 清华大学 管理科学与工程系 [email protected]. 简介. 关系模型是目前商品化数据库产品的主流数据模型: IBM DB2 、 Oracle 、 Sybase 、 Microsoft SQL Server 和 Microsoft Access 、 … 关系模型有着坚实的理论基础(集合论,数理逻辑),可以保证关系模型的合理设计和有效实现。 关系模型简洁易用,关系数据库是由一系列的关系组成,而关系是以人们最熟悉的表格的形式组织和展现给用户的。 表格中的数据可以使用简单易懂的语言进行复杂地查询。. 主要内容. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: 第 5 章 关系数据模型

第 5 章 关系数据模型刘红岩清华大学 管理科学与工程系[email protected]

Page 2: 第 5 章 关系数据模型

Hongyan Liu @ Tsinghua University

2

简介关系模型是目前商品化数据库产品的主流数据模型:

IBM DB2 、 Oracle 、 Sybase 、 Microsoft SQL Server 和Microsoft Access …、

关系模型有着坚实的理论基础(集合论,数理逻辑),可以保证关系模型的合理设计和有效实现。 关系模型简洁易用,关系数据库是由一系列的关系组成,而关系是以人们最熟悉的表格的形式组织和展现给用户的。 表格中的数据可以使用简单易懂的语言进行复杂地查询。

Page 3: 第 5 章 关系数据模型

Hongyan Liu @ Tsinghua University

3

主要内容 关系模型的数据结构 关系模型的约束 关系操作语言:关系代数

Page 4: 第 5 章 关系数据模型

5.1 关系模型的数据结构 关系( relation ):关系模型的基本组成单元 a named, two-dimensional table of data,

consisting of a set of named columns and an arbitrary number of unnamed rows.

描述产品的关系 return to page 16pCode pType pName cost price

101 足球类 足球 85 110102 足球类 手套 90 122201 羽毛球类 羽球鞋 28 38202 羽毛球类 球拍 200 250301 游泳类 泳镜 85 102302 游泳类 泳帽 50 63401 健美类 拉力器 40.5 54.5402 健美类 十磅哑铃 70 92403 健美类 跳绳   20

Page 5: 第 5 章 关系数据模型

Hongyan Liu @ Tsinghua University

5

关系 列( column ):属性( attribute ),字段

( field ) 第一行各列的值,其余各行对应列的标题 pCode pType pName cost price

101 足球类 足球 85 110102 足球类 手套 90 122201 羽毛球类 羽球鞋 28 38202 羽毛球类 球拍 200 250301 游泳类 泳镜 85 102302 游泳类 泳帽 50 63401 健美类 拉力器 40.5 54.5402 健美类 十磅哑铃 70 92403 健美类 跳绳   20

Page 6: 第 5 章 关系数据模型

Hongyan Liu @ Tsinghua University

6

关系 行( row ):元组( tuple ),记录

( record ) 除属性所在行之外的每一行pCode pType pName cost price

101 足球类 足球 85 110102 足球类 手套 90 122201 羽毛球类 羽球鞋 28 38202 羽毛球类 球拍 200 250301 游泳类 泳镜 85 102302 游泳类 泳帽 50 63401 健美类 拉力器 40.5 54.5402 健美类 十磅哑铃 70 92403 健美类 跳绳   20

Page 7: 第 5 章 关系数据模型

Hongyan Liu @ Tsinghua University

7

关系 属性的域( domain )

每一个属性在各行中的取值类型都是相同的,都有一个取值范围 pCode pType pName cost price

101 足球类 足球 85 110102 足球类 手套 90 122201 羽毛球类 羽球鞋 28 38202 羽毛球类 球拍 200 250301 游泳类 泳镜 85 102302 游泳类 泳帽 50 63401 健美类 拉力器 40.5 54.5402 健美类 十磅哑铃 70 92403 健美类 跳绳   20

Page 8: 第 5 章 关系数据模型

Hongyan Liu @ Tsinghua University

8

关系 分量( item ) : 每个属性对应每一行的值

原子性,即分量不可以再细分

关系模型的基本要求 : 分量不可分, 1NF

sNo sName sex address telNo

945599 张珊 f 山东省烟台市 62783456,82345679

945598 李思 m 北京市 62445678

Page 9: 第 5 章 关系数据模型

Hongyan Liu @ Tsinghua University

9

关系 解决方法:横向和纵向分解 return to page 16

sNo sName sex province city telNo

945599 张珊 f 山东省 烟台市 62783456

945599 张珊 f 山东省 烟台市 82345679

945598 李思 m 北京市 62445678

Page 10: 第 5 章 关系数据模型

sNo sName sex province city

945599 张珊 f 山东省 烟台市945598 李思 m 北京市

telNo

62783456

82345679

62445678

sNo

945599

945599

945598

Page 11: 第 5 章 关系数据模型

Hongyan Liu @ Tsinghua University

11

关系 分量

分量可以是空值( null ),即什么值都没有,这意味着两种可能: 一种是其值未知,即目前尚不知道它的取值,如编号为 4

03 的产品的成本, 另一种是不存在,例如,北京市的学生其所属省这个属性的取值就不存在。

对空值进行判断时,采用特殊的方法,不论属于何种数据类型,一般都采用“ is null” 或者“ is not null” 来判断。

Page 12: 第 5 章 关系数据模型

Hongyan Liu @ Tsinghua University

12

关系 关系的度或目( degree ) : 属性的个数 关系的基数( cardinality )元组个数 总结关系的特点为: each relation has a

unique name 分量不可分( single-valued) 行相异 (each row is unique, sequence is

insignificant) 列同质 (each attribute has a unique name,

sequence of columns is insignificant)

Page 13: 第 5 章 关系数据模型

Hongyan Liu @ Tsinghua University

13

关系模式 关系:关系的实例:

一个关系的内容是随时间而变化的,因此准确地说,关系实际上是关系的实例 (instance) 的简称, 关系模式:关系的型

关系模式是关系的型的描述,它一般包括关系的名字,属性的名字,属性的域等信息 Product(pCode: char(3), pType: char(50), pName: char(50), cost:

real, price: real) 也可暂时忽略域的信息变为:Product(pCode, pType, pName, cost, price)

Page 14: 第 5 章 关系数据模型

Hongyan Liu @ Tsinghua University

14

关系数据库 关系数据库是若干互不相同的关系组成的,而关系数据库模式是由若干个与某应用背景相关的关系模式构成的。

例如,与某公司销售系统有关的另两个关系模式为:Order(orderNo, custNo, orderDate, delivDate)

orderNo custNo orderDate delivDate21 10001 2002-1-5 2002-1-522 10002 2002-1-5 2002-1-6

23 10003 2002-2-10 2002-2-20

24 10002 2002-3-4 2002-3-5return to page 16

Page 15: 第 5 章 关系数据模型

Hongyan Liu @ Tsinghua University

15

关系数据库OrderDetail(orderNo, pCode, qty, discount)

return to page 16orderNo pCode qty discount

21 101 100 021 102 60 0.0521 202 200 0.122 301 1000 0.2522 302 1000 023 202 20 024 401 800 0.1524 402 500 0.224 403 500 024 101 200 0

Page 16: 第 5 章 关系数据模型

Hongyan Liu @ Tsinghua University

16

键( key )

候选键( candidate key ) :简称为键 (key) 那些能够唯一标识关系里每一行的属性或属性组,如果是属性组 ( 复合键, composite key) ,该属性组的任一个真子集不具有此特性 :一个取值只对应一行元组 例如:如下表的候选键各有哪些? Order(orderNo, custNo, orderDate, delivDate) page 14

OrderDetail(orderNo, pCode, qty, discount) page 15 Product(pCode, pType, pName, cost, price) page 4 Student(sNo, sName, sex, province, city, telNo) page 9

Page 17: 第 5 章 关系数据模型

Hongyan Liu @ Tsinghua University

17

键 主键( primary key )

任意一个候选键都可以定义为主键 每一个表都应该定义一个主键

定义主键之后, DBMS 可以识别行的重复,在其他关系模式中可以通过主键属性来引用该关系模式中的元组。 例如: Customer(custNo, custName, custTel1, custTel2)

Order(orderNo, custNo, orderDate, delivDate)

Page 18: 第 5 章 关系数据模型

Hongyan Liu @ Tsinghua University

18

键外键( foreign key )

是一个关系中的一个属性或属性组,它不是本关系的候选键,但它的值引用的是本关系的键的取值,或是其他关系的键的取值。 例 1 : Customer(custNo, custName, custTel)

Order(orderNo, custNo, orderDate, delivDate) 例 2 :

Part(partNo, partName, weight, color, itemNo)

Page 19: 第 5 章 关系数据模型

Hongyan Liu @ Tsinghua University

19

键Customer

orderNo custNo orderDate delivDate21 10001 2002-1-5 2002-1-5

22 10002 2002-1-15 2002-1-16

23 10003 2002-2-10 2002-2-20

24 10002 2002-3-4 2002-3-5

Order

custNo custName Address custTel110001 BC 北京市海淀区中关村大街 25号 (010)62789000

10002 ADE … (0749)85349210003 CFM … …

Page 20: 第 5 章 关系数据模型

Hongyan Liu @ Tsinghua University

20

键 例 2 :

Part(partNo, partName, weight, color, itemNo)

partNo partName color weight ItemNop1 screw blue 10p2 bolt green 15 P1p3 nut red 22 p2p4 screw red 25 p3

Page 21: 第 5 章 关系数据模型

Hongyan Liu @ Tsinghua University

21

键 超键( super key )是包含任一个候选键的属性或属性组,

例如, pCode 和( pCode, pType )都可以称作关系模式Product 的超键。 orderN

opCode qty discount

21 101 100 021 102 60 0.0521 202 200 0.123 202 20 024 401 800 0.15

pCode pType pName cost price101 足球类 足球 85 110102 足球类 手套 90 122201 羽毛球类 羽球鞋 28 38202 羽毛球类 球拍 200 250

OrderDetail(orderNo, pCode, qty, discount)的超键有哪些?

Page 22: 第 5 章 关系数据模型

Hongyan Liu @ Tsinghua University

22

键 主属性、非主属性

包含在任一个候选键中的属性称为主属性( prime attribute ),

没有包含在任一个候选键中的属性称为非主属性( non-prime attribute ) 例: Product(pCode, pType, pName, cost,

price) 的主属性和非主属性各有哪些? 假设产品没有重名时,情况又怎样?

Page 23: 第 5 章 关系数据模型

Hongyan Liu @ Tsinghua University

23

5.2 关系模型的约束 约束的类型

域完整性约束( domain integrity constraint ) 实体完整性约束( entity integrity constraint ) 参照完整性约束( referential integrity constraint ) 其他一般性约束

约束的作用 可以检查数据库中数据取值的正确性,最大限度地符合数据的语义

Page 24: 第 5 章 关系数据模型

Hongyan Liu @ Tsinghua University

24

域完整性约束 一个关系中某列的所有取值必须来自该属性的域

例如,产品的编号 pCode 属性的域为包含 3 个数字的字符串,如果某一个元组在该属性上的取值为“ a01” 就违反了该属性的域约束。 DBMS 应该提供为每个属性定义域的方法,并且为定义的域进行合法性检查,具体定义方法在介绍 SQL 语句和 Access 中表的创建时再详细介绍。

Page 25: 第 5 章 关系数据模型

Hongyan Liu @ Tsinghua University

25

实体完整性 约束主键属性的取值

要求每个关系都要定义一个主键,而且主键的取值不能为空,如果主键是复合键(属性组),则该属性组中的任一个属性的取值都不能为空。 一般来说,如果一个关系定义了主键,则系统会自动检查它的每一个取值是否为空,是否重复,如果为空,或者重复,则系统会给出提示,并且不允许相应操作的执行。 例: Order(orderNo, custNo, orderDate, delivDate) OrderDetail(orderNo, pCode, qty, discount) 哪些属性的取值不能为空?

Page 26: 第 5 章 关系数据模型

Hongyan Liu @ Tsinghua University

26

参照完整性参照完整性约束又称为外键约束( foreign

key constraint ) 约束的是外键属性的取值:一个表的外键的取值只能有两种情况:

或者取所参照的表的主键的某个取值, 或者为空,如果属性的域定义或其他约束没有限定相应属性的取值不可以为空。

Order(orderNo, custNo, orderDate, delivDate)

OrderDetail(orderNo, pCode, qty, discount)

Product(pCode, pType, pName, cost, price)

Page 27: 第 5 章 关系数据模型

参照完整性OrderorderNo custNo orderDate

21 10001 2002-1-5 2002-1-5

22 10002 2002-1-15 2002-1-16

23 10003 2002-2-10 2002-2-20

24 10002 2002-3-4 2002-3-5

delivDate

orderNo pCode qty discount21 101 100 021 102 60 0.0521 202 200 0.122 301 1000 0.2522 302 1000 023 202 20 024 401 800 0.1524 402 500 0.224 403 500 024 101 200 0

OrderDetail

此时, orderNo 可以取空值吗?

Page 28: 第 5 章 关系数据模型

Hongyan Liu @ Tsinghua University

28

一般性约束 还有一些约束不是所有关系模式所共同拥有的,而是依赖于具体的应用背景而具有的一些约束,例如 :

Product 表中属性 price 的取值应该大于属性cost 的取值等。

这些约束应该能够由数据库系统提供的方法来定义和实施。

Page 29: 第 5 章 关系数据模型

Hongyan Liu @ Tsinghua University

29

5.3 关系数据模型的操纵语言 关系数据模型的操纵语言分为两类:

关系代数 关系演算

关系代数包括一系列操作符,描述如何一步步地得到查询结果, 关系演算用谓词表达关系的操作,根据变量的不同分为 :

元组关系演算 域关系演算

Page 30: 第 5 章 关系数据模型

Hongyan Liu @ Tsinghua University

30

关系代数( relational algebra)

关系代数的基本操作包括 5个: 选择( selection ) 投影( projection ) 并( union ) 笛卡儿积( cross-product ) 集合差( set-difference )

Page 31: 第 5 章 关系数据模型

Hongyan Liu @ Tsinghua University

31

关系代数 除此之外,还有一些可以由基本运算推导出的其他运算,如:

交( intersection ) 连接( join ) 重命名( renaming) 除( division )等。

Page 32: 第 5 章 关系数据模型

Hongyan Liu @ Tsinghua University

32

选择 σ 选择条件(〈关系〉)

小括号里的关系 ,即表名,是该操作的参数。 “ 选择条件”是个布尔表达式,

由逻辑运算符“与”(“”)和“或”(“”)连接算术比较表达式构成的,每个算术比较表达式的构成为:属性名 θ 常数或属性名

属性名(操作符左边)可由属性在关系中的顺序号代替 θ代表算术比较运算符,包括、、、、、。

选择操作的结果仍然是一个关系

Page 33: 第 5 章 关系数据模型

选择 σprice>100 ( Product )

pCode pType pName cost price101 足球类 足球 85 110102 足球类 手套 90 122201 羽毛球类 羽球鞋 28 38202 羽毛球类 球拍 200 250301 游泳类 泳镜 85 102302 游泳类 泳帽 50 63401 健美类 拉力器 40.5 54.5402 健美类 十磅哑铃 70 92403 健美类 跳绳   20

pCode pType pName cost price

101 足球类 足球 85 110

102 足球类 手套 90 122

202 羽毛球类 球拍 200 250

301 游泳类 泳镜 85 102

pCode pType pName cost price

202 羽毛球类 球拍 200 250

301 游泳类 泳镜 85 102

σ2“足球类” 5>100 ( Product )

= σ2“足球类” ( σ 5>100 ( Product ))

Page 34: 第 5 章 关系数据模型

选择 σpType “= 足球类” pType “= 游泳类”( Product )

pCode pType pName cost price101 足球类 足球 85 110102 足球类 手套 90 122201 羽毛球类 羽球鞋 28 38202 羽毛球类 球拍 200 250301 游泳类 泳镜 85 102302 游泳类 泳帽 50 63401 健美类 拉力器 40.5 54.5402 健美类 十磅哑铃 70 92403 健美类 跳绳   20

pCode

pType pName cost price101 足球类 足球 85 110102 足球类 手套 90 122301 游泳类 泳镜 85 102302 游泳类 泳帽 50 63

Page 35: 第 5 章 关系数据模型

Hongyan Liu @ Tsinghua University

35

投影 π 属性表 ( <关系 > )

pType足球类羽毛球类游泳类健美类

pType pName足球类 足球足球类 手套羽毛球类 球拍游泳类 泳镜

pCode pType pName cost price

101 足球类 足球 85 110

102 足球类 手套 90 122

201 羽毛球类 羽球鞋 28 38

202 羽毛球类 球拍 200 250

301 游泳类 泳镜 85 102

302 游泳类 泳帽 50 63

401 健美类 拉力器 40.5 54.5

402 健美类 十磅哑铃 70 92

403 健美类 跳绳 20

πpType,pName(σprice>100(Product))

πpType ( Product)

Page 36: 第 5 章 关系数据模型

Hongyan Liu @ Tsinghua University

36

并 <关系 1> ∪ <关系 2>

关系 1 和关系 2 必须符合并兼容( union-compatible )特性:

( 1 )有相同的属性个数( 2)对应的属性有相同的域

r s

Page 37: 第 5 章 关系数据模型

Hongyan Liu @ Tsinghua University

37

并πpName, price ( σprice>100 ( Product ))

∪πpName, price ( σpType=” 游泳类”( Product )) pCode pType pName cost price

101 足球类 足球 85 110

102 足球类 手套 90 122

201 羽毛球类 羽球鞋 28 38

202 羽毛球类 球拍 200 250

301 游泳类 泳镜 85 102

302 游泳类 泳帽 50 63

401 健美类 拉力器 40.5 54.5

402 健美类 十磅哑铃 70 92

403 健美类 跳绳 20

pName price足球 110手套 122

球拍 250泳镜 102

pName price

泳镜 102泳帽 63

pName price足球 110手套 122球拍 250泳镜 102泳帽 63

Page 38: 第 5 章 关系数据模型

差 < 关系 1> - < 关系 2>

πpCode ( Product ) -πpCode ( OrderDetail ) 得到的什么?

sr

orderNo pCode qty discount21 101 100 021 102 60 0.0521 202 200 0.122 301 1000 0.2522 302 1000 023 202 20 024 401 800 0.1524 402 500 0.224 403 500 024 101 200 0

pCode pType pName cost price

101 足球类 足球 85 110

102 足球类 手套 90 122

201 羽毛球类 羽球鞋 28 38

202 羽毛球类 球拍 200 250

301 游泳类 泳镜 85 102

302 游泳类 泳帽 50 63

401 健美类 拉力器 40.5 54.5

402 健美类 十磅哑铃 70 92

403 健美类 跳绳 20

Page 39: 第 5 章 关系数据模型

交 <关系 1> ∩ <关系 2> r∩s=r-(r-s)

pCode101202301

pCode101202301302202

401402

pCode101102202301

r s

r-s

例: πpCode( σprice>100( Product ∩)) πpCode ( σqty>=100

(OrderDetail) )

Page 40: 第 5 章 关系数据模型

Hongyan Liu @ Tsinghua University

40

笛卡儿积 <关系 1> <关系 2>

设两个关系分别为 r和 s ,分别含有 m1和 m2个属性,以及 n1和 n2行元组,

r和 s的笛卡儿积结果关系包含的属性依次是 r的 m1个属性和 s的 m2个属性 r和 s的笛卡儿积结果将包含( n1 n2 )行元组

对于 r和每一行元组 tr和 s的每一行元组 ts ,在结果中都有一行 <tr, ts> 存在 符号 < tr, ts > 代表两行元组的串接

( concatenation )。

Page 41: 第 5 章 关系数据模型

Order orderDetail orderNo pCode qty discount

21 101 100 021 102 60 0.0521 202 200 0.122 301 1000 0.2522 302 1000 023 202 20 024 401 800 0.1524 402 500 0.224 403 500 024 101 200 0

orderNo custNo orderDate delivDate21 10001 2002-1-5 2002-1-5

22 10002 2002-1-15 2002-1-16

23 10003 2002-2-10 2002-2-20

24 10002 2002-3-4 2002-3-5

Product

pCode pType pName cost price

101 足球类 足球 85 110

102 足球类 手套 90 122

201 羽毛球类 羽球鞋 28 38

202 羽毛球类 球拍 200 250

301 游泳类 泳镜 85 102

302 游泳类 泳帽 50 63

401 健美类 拉力器 40.5 54.5

402 健美类 十磅哑铃 70 92

403 健美类 跳绳 20

Page 42: 第 5 章 关系数据模型

笛卡儿积πpCode, pName(σprice>120(Product))(σorderno=21(OrderDetail))

Product. pCode

pName orderNo

OrderDetail. pCode

qty discount102 手套 21 101 100 0

102 手套 21 102 60 0.05102 手套 23 202 200 0.1202 球拍 21 101 100 0202 球拍 21 102 60 0.05202 球拍 23 202 200 0.1

orderNo pCode

qty discount

21 101 100 021 102 60 0.0521 202 200 0.1

pCode pName102 手套202 球拍

σ product.pcode=orderdetatil.pcode (πpCode,pName(σprice>120(Product))(σ

orderno=21(OrderDetail)))

Page 43: 第 5 章 关系数据模型

Hongyan Liu @ Tsinghua University

43

笛卡儿积 πorderNo (OrderDetail) πpCode(σpType=”足球类” (Product))

orderNo pCode21 10121 10222 10122 10223 10123 10224 10124 102

orderNo21222324

pCode101102

×

Page 44: 第 5 章 关系数据模型

Hongyan Liu @ Tsinghua University

44

连接 <关系 1> c < 关系 2> r c s =σc( r s)

c “代表连接条件,是由逻辑运算符 ” “或 ”连接算术比较表达式构成的,每个算术比较表达式的组成为:AiθBj

θ代表算术比较运算符:、、、、、, Ai和Bj是分别来自两个关系的属性,或属性和常数组成的算术表达式。

Productproduct.pcode=orderdetail.pcodeOrderDetail

Page 45: 第 5 章 关系数据模型

orderDetail

orderNo pCode qty discount21 101 100 021 102 60 0.0521 202 200 0.1

22 301 1000 0.2522 302 1000 023 202 20 024 401 800 0.1524 402 500 0.224 403 500 024 101 200 0

Product

pCode pType pName cost price

101 足球类 足球 85 110

102 足球类 手套 90 122

201 羽毛球类 羽球鞋 28 38

202 羽毛球类 球拍 200 250

301 游泳类 泳镜 85 102

302 游泳类 泳帽 50 63

401 健美类 拉力器 40.5 54.5

402 健美类 十磅哑铃 70 92

403 健美类 跳绳 20

Page 46: 第 5 章 关系数据模型

Hongyan Liu @ Tsinghua University

46

连接 查找足球类产品的销售情况,包括产品名称、订单编号,产品原价,折扣πpName,orderno,price,discount(σpType=” 足球类” (Product)

C OrderDetail)) C: product.pcode=orderdetail.pcode πpCode,pName (Product(price*(1-discount)<cost)

(product.pcode=orderdetail.pcode)OrderDetail) 连接条件为属性名相同的属性的取值相等,结果关系将属性名相同的列只保留一个的连接称为自然连接

( natural join ) r s

Page 47: 第 5 章 关系数据模型

Hongyan Liu @ Tsinghua University

47

连接例: πpCode,pName(σpType=” 足球类” (Product) )

OrderDetailπorderNo, orderDate(Order)

pCode pName orderNo orderDate qty discount

101 足球 21 2002-1-5 100 0

102 手套 21 2002-1-5 60 0.05

101 足球 24 2002-3-4 200 0

Page 48: 第 5 章 关系数据模型

Hongyan Liu @ Tsinghua University

48

连接 外连接:

左外连接 (left outer join) :r * c s

右外连接( right outer join ):r * c s

全外连接( full outer join ):r ** c s

Page 49: 第 5 章 关系数据模型

例: (σpType=”羽毛球类” (Product) ) * OrderDetail

pCode pType pName cost price orderNo

qty discount

201 羽毛球类 羽球鞋 28 38202 羽毛球类 球拍 200 250 21 200 0.1202 羽毛球类 球拍 200 250 23 20 0

pCode pType pName cost price201 羽毛球类 羽球鞋 28 38202 羽毛球类 球拍 200 250

orderNo pCode qty discount21 101 100 021 102 60 0.0521 202 200 0.122 301 1000 0.2522 302 1000 023 202 20 024 401 800 0.1524 402 500 0.224 403 500 024 101 200 0

Page 50: 第 5 章 关系数据模型

Hongyan Liu @ Tsinghua University

50

重命名 ρs(A1,A2, …, An)( r )

r 重命名为 s ,并将 r 的 n 个属性重新命名为对应的( A1 , A2 …, , An ),如果属性不需要改名,则( A1 , A2 …, , An )可省。 例: Part(pno, pname, weight, subpno)

查找每个零件的编号、名称、重量以及构成它的子零件的名称和重量pno pname weight subpno1 p1 102 p2 20 13 p3 30 2

pno pname weight subpno1 p1 102 p2 20 13 p3 30 2

Page 51: 第 5 章 关系数据模型

Hongyan Liu @ Tsinghua University

51

重命名查找每个零件的编号、名称、重量以及构成它的子零件的名称和重量

π part.pno, part.pname,part.weight,sp.pname,sp.weight

( part * part.subpno=sp.pno ρsp(Part) )

pno pname weight pname weight

2 p2 20 p1 10

3 p3 30 p2 20

pno pname weight subpno1 p1 102 p2 20 13 p3 30 2

pno pname weight subpno1 p1 102 p2 20 13 p3 30 2

Page 52: 第 5 章 关系数据模型

Hongyan Liu @ Tsinghua University

52

除<关系 1> <关系 2>

r s =πx (r)- πx((πx (r) s) - r) x 代表 r中不包含于 s中的属性集,即 x=attr.(r)-

attr.(s) ,例如:查找购买了所有足球类产品的订单号码:πorderNo, pCode (OrderDetail) πpCode(σpType=”足球类”

(Product))

Page 53: 第 5 章 关系数据模型

除 πorderNo, pCode (OrderDetail)

π pCode(σpType=”足球类” (Product))

π orderNo, pCode (OrderDetail) π pCode(σpType=”足球类” (Product))

orderNo pCode21 10121 10221 20222 30122 30223 20224 40124 40224 40324 101

pCode101102

orderNo21