§1 å ³ç³»ä»£æ°è¿ç®1.æ½è±¡çå ³ç³»æä½è¯è¨ã 2.è¿ç®å¯¹è±¡åè¿ç®ç»æé½æ¯ ...
§1 å ³ç³»ä»£æ°è¿ç®1.æ½è±¡çå ³ç³»æä½è¯è¨ã 2.è¿ç®å¯¹è±¡åè¿ç®ç»æé½æ¯ ...
§1 å ³ç³»ä»£æ°è¿ç®1.æ½è±¡çå ³ç³»æä½è¯è¨ã 2.è¿ç®å¯¹è±¡åè¿ç®ç»æé½æ¯ ...
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