19.01.2015 Views

§1 关系代数运算1.抽象的关系操作语言。 2.运算对象和运算结果都是 ...

§1 关系代数运算1.抽象的关系操作语言。 2.运算对象和运算结果都是 ...

§1 关系代数运算1.抽象的关系操作语言。 2.运算对象和运算结果都是 ...

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

第 四 章 关 系 代 数 运 算<br />

关 系 数 据 模 型 的 运 算 基 础 :<br />

集 合 :(e 1 ,e 2 ,e 3 )<br />

包 :(e 1 ,e 2 ,e 3 ,e 2 )<br />

§1 关 系 代 数 运 算<br />

一 、 关 系 代 数 运 算 的 特 点<br />

1. 抽 象 的 关 系 操 作 语 言 。<br />

2. 运 算 对 象 和 运 算 结 果 都 是 关 系 。<br />

1


二 、 关 系 代 数 运 算 的 分 类<br />

1. 二 元 集 合 运 算 :<br />

并 (UNION; )<br />

差 (DIFFERENCE; )<br />

交 (INTERSECTION; )<br />

笛 卡 尔 乘 积 (CARTESIAN PRODUCT; )<br />

2. 一 元 运 算 :<br />

选 择 (SELECT; )<br />

投 影 (PROJECTION; П )<br />

3. 连 接 运 算 :(JOIN; 、 )<br />

4. 命 名 运 算 ( 一 元 运 算 ; )<br />

θ<br />

2


三 、 关 系 代 数 运 算<br />

1. 二 元 运 算<br />

(1) 并 兼 容 的 关 系 :<br />

若 两 个 关 系 的 属 性 个 数 相 同 , 且 对 应 属 性 的<br />

域 也 相 同 , 则 称 这 两 个 关 系 是 并 兼 容 的 。<br />

(2) 并 运 算 : 记 作 R∪S<br />

(3) 差 运 算 : 记 作 R-S<br />

(4) 交 运 算 : 记 作 R∩S<br />

关 系 R 和 S 必 须<br />

是 并 兼 容 的 !<br />

3


例 设 并 兼 容 的 关 系 R、S 如 下 :<br />

R(A, B,C)<br />

a 1 c<br />

d 4 f<br />

c 3 d<br />

R∪S:<br />

(A,B,C)<br />

a 1 c<br />

b 2 a<br />

c 3 d<br />

d 4 f<br />

R∩S:<br />

R-S:<br />

S(A,B,C)<br />

b 2 a<br />

d 4 f<br />

(A,B,C)<br />

d 4 f<br />

(A, B,C)<br />

a 1 c<br />

c 3 d<br />

4


(5) 笛 卡 尔 乘 积 运 算<br />

两 个 属 性 个 数 分 别 是 m 、n, 元 组 个 数 分 别 为 k 1 、<br />

k 2 的 关 系 R 和 S, 它 们 的 笛 卡 尔 乘 积 是 一 个 关 系 ,<br />

该 关 系 属 性 个 数 ( 度 / 元 ) 为 m + n、 元 组 个 数 为<br />

k 1·k 2 , 记 为 R×S<br />

例<br />

R(A,B,C)<br />

a 1 c<br />

b 2 f<br />

S (A, BB)<br />

aa 11<br />

bb 22<br />

R×S:<br />

(R.A,<br />

B, C, S.A, BB)<br />

a 1 c aa 11<br />

a 1 c bb 22<br />

b 2 f aa 11<br />

b 2 f bb 22<br />

5


2. 一 元 运 算<br />

(1) 选 择 : 从 一 个 关 系 R 中 选 出 满 足 条 件 表 达 式 F<br />

的 元 组 , 构 成 一 个 新 关 系 , 记 为 F(R)。<br />

例<br />

S(SNO, SNAME, STATUS, CITY)<br />

S1 Smith 20 London<br />

S2 Jones 10 Paris<br />

S3 Blake 30 Paris<br />

S4 Clark 20 London<br />

S5 Adams 30 Athens<br />

б status > 20(S)=<br />

供 应 商<br />

( SNO, SNAME, STATUS, CITY )<br />

S3 Blake 30 Paris<br />

S5 Adams 30 Athens<br />

6


(2) 投 影 (Projection)<br />

投 影 运 算 从 一 个 关 系 R 中 选 出 属 性 ( 组 )A, 构<br />

成 一 个 新 关 系 , 记 为 П A(R)。<br />

例<br />

例<br />

ПSNO,SNAME(S)=<br />

П CITY(<br />

( SNO, SNAME )<br />

S1<br />

S2<br />

S3<br />

S4<br />

S5<br />

Smith<br />

Jones<br />

Blake<br />

Clark<br />

Adams<br />

б (status > 10)∧(SNO < ‘S6’)(S)<br />

=<br />

( CITY )<br />

London<br />

Paris<br />

Athens<br />

7<br />

)


3. 连 接 运 算<br />

一 般 连 接 , 即 θ - 连 接 。 记 为 :R<br />

例<br />

R1(A1,A2)<br />

a1 1<br />

a2 2<br />

a3 1<br />

a4 2<br />

R2(B1,A2)<br />

b1 1<br />

b2 1<br />

b3 2<br />

b4 3<br />

(A1,R1.A2,B1,R2.A2)<br />

R1 R2 =<br />

a2 2 b1 1<br />

R1.A2 R2.A2<br />

a2 2 b2 1<br />

a4 2 b1 1<br />

a4 2 b2 1<br />

θ<br />

S<br />

8


自 然 连 接 : 自 然 连 接 是 两 个 关 系 在 同 名 属 性 上 进<br />

行 等 值 连 接 的 运 算 。 记 为 :R S<br />

例 R(A, B)<br />

a1 1<br />

a2 1<br />

a2 2<br />

a3 1<br />

S(B, C)<br />

1 b1<br />

1 b2<br />

2 b2<br />

R S =<br />

( A, B, C )<br />

a1 1 b1<br />

a1 1 b2<br />

a2 1 b1<br />

a2 1 b2<br />

a2 2 b2<br />

a3 1 b1<br />

a3 1 b2<br />

9


例 “ 供 应 商 - 零 件 ” 数 据 库 :<br />

设 :S(SNO, SNAME, STATUS, CITY)<br />

S1 Smith 20 London<br />

S2 Jones 10 Paris<br />

S3 Blake 30 Paris<br />

S4 Clark 20 London<br />

S5 Adams 30 Athens<br />

SP(SNO, PNO, QTY)<br />

S1 P1 300<br />

S1 P4 200<br />

S1 P5 100<br />

S2 P1 300<br />

S2 P2 400<br />

S3 P2 200<br />

供 应 商<br />

供 应 商 供 应<br />

零 件 情 况<br />

10


б SNO =‘S1’(S<br />

SP)<br />

(SNO,SNAME, STATUS, CITY, PNO,QTY)<br />

=<br />

S1 Smith 20 London P1 300<br />

S1 Smith 20 London P4 200<br />

S1 Smith 20 London P5 100<br />

11


4. 命 名 运 算<br />

(i) s (R): 把 关 系 R 名 字 命 名 为 S。<br />

( 属 性 名 不 变 )<br />

(ii) S(A1, ,An) (R): 把 关 系 R 的 名 字 命 名 为 S,<br />

并 且 把 S 的 属 性 依 次 命 名 为 A1, ,An<br />

例 1 列 出 各 课 程 先 修 课 的 先 修 课 。<br />

COURSE(Cno, Cname, Pcno)<br />

c1 math<br />

c2 prog c1<br />

c3 ds c2<br />

c4 os c3<br />

c5 db c3<br />

12


解 决 方 案 :<br />

COURSE(Cno, Cname, Pcno)<br />

c1<br />

math<br />

c2 prog c1<br />

c3 ds c2<br />

c4 os c3<br />

c5 db c3<br />

COURSE(Cno, Cname, Pcno)<br />

自 然 连 接 <br />

c1<br />

(- 连 接 )<br />

math<br />

c2 prog c1<br />

c3 ds c2<br />

c4 os c3<br />

c5 db c3<br />

П Cno,Pcno(COURSE)<br />

(П (COURSE) )<br />

C2( Pcno,PPcno ) Cno,Pcno<br />

13


例 2 命 名 :“ 供 应 商 供 应 零 件 的 详 细 情 况 ”<br />

S _SP(A1,A2,A3,A4,A5,A6)(б SNO =‘S1’(S<br />

SP))<br />

S_SP(A1, A2, A3, A4, A5, A6)<br />

=<br />

S1 Smith 20 London P1 300<br />

S1 Smith 20 London P4 200<br />

S1 Smith 20 London P5 100<br />

四 、 关 系 代 数 运 算 结 果 的 保 存<br />

BK-p11<br />

线 性 符 号 规 则 :<br />

(1) 每 一 步 运 算 结 果 赋 予 一 个 命 名 的 关 系 模 式 。<br />

(2) 最 后 一 步 的 运 算 结 果 必 须 赋 予 关 系 Answer。<br />

(3) 每 一 步 可 以 进 行 一 个 或 几 个 运 算 。<br />

14


例 如 前 例 2: “ 供 应 商 S1 供 应 零 件 的 详 细 情<br />

况 ” W(SN,NM,ST,CT,PN,Q) := S SP<br />

Answer(SNO,SNAME,STATUS,CITY,PNO,QTY)<br />

:= б SNO =‘S1’(W)<br />

15


§2 关 系 代 数 运 算 举 例<br />

例 1 本 例 以 “ 供 应 商 - 零 件 ” 实 例 为 背 景 。<br />

其 中 , 关 系 P( 代 表 “ 零 件 ”) 如 下 :<br />

P( PNO, PNAME, COLOR, WEIGHT )<br />

P1 Nut Red 12<br />

P2 Bolt Green 17<br />

P3 Screw Blue 17<br />

P4 Screw Red 14<br />

P5 Cam Blue 12<br />

P6 Cog Red 19<br />

16


(1) 找 出 供 应 零 件 P2 的 供 应 商 名 。<br />

W(SN,NM,ST,CT,PN,Q) := S SP<br />

R(SN,NM,ST,CT,PN,Q) := б PN=‘P2’ (W)<br />

Answer(SNAME) := NM (R)<br />

试 比 较 :<br />

R(SNO,PN,Q) := б PNO=‘P2’ (SP)<br />

W(SN,NM,ST,CT,PN,Q) := S R<br />

Answer(SNAME) := NM(W)<br />

结 论 : (1) 结 果 相 同 ;( 等 价 !)<br />

17<br />

(2) 计 算 过 程 开 销 不 同 。( 执 行 效 率 !)


(2) 找 出 至 少 供 应 了 一 种 红 色 零 件 的 供 应 商 名 。<br />

TS(SNO,SNAME) := SNO,SNAME (S)<br />

TSP(SNO,PNO) := SNO,PNO (SP)<br />

W(SNO,PNO,SNAME) := TS<br />

TSP<br />

TR(PNO,COLOR) := б COLOR=‘red’ ( PNO,COLOR (P))<br />

TW(SNO,PNO,SNAME,COLOR) := TR<br />

W<br />

Answer(SNAME) := SNAME(TW)<br />

18


(3) 找 出 没 有 供 应 过 零 件 P2 的 供 应 商 名 。<br />

解 : (i) 供 应 过 零 件 P2 的 供 应 商 号 :<br />

S1(SNO) := SNO(бPNO =‘p2’(SP))<br />

(ii) 当 前 数 据 库 所 “ 掌 握 ” 的 供 应 商 号 :<br />

S2(SNO) := SNO (S)<br />

(iii) 没 有 供 应 过 零 件 P2 的 供 应 商 号 及 名 字 :<br />

TNM(SNO, SNM) := SNO, SNAME(S)<br />

W(SNO,SNM) := TNM (S2 – S1)<br />

Answer(SNAME) := SNM(W)<br />

19


熟 练 掌 握 : 关 系 代 数 运 算 , 并 能 够 用 关 系 代 数 表<br />

达 式 表 示 查 询 请 求 。<br />

了 解 : 关 系 代 数 查 询 的 执 行 效 率 问 题 。<br />

20


课 堂 练 习<br />

(i)P129: 习 题 5.2.1 (a)、(f)、(h)<br />

注 意 :(1) 采 用 “ 线 性 ” 形 式 解 答 。<br />

(2) 不 必 给 出 查 询 结 果 的 具 体 数 据 !<br />

(ii)P130: 习 题 5.2.7<br />

(iii)P131: 习 题 5.2.9(a)<br />

21

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!