02.05.2014 Visualizzazioni

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

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

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

SHOW MORE
SHOW LESS

Trasformi i suoi PDF in rivista online e aumenti il suo fatturato!

Ottimizzi le sue riviste online per SEO, utilizza backlink potenti e contenuti multimediali per aumentare la sua visibilità e il suo fatturato.

第 四 章 关 系 代 数 运 算<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!