软考 - 软设之关系代数


两个表

关系R关系S
SNoSNameSDeptSNoSNameSDept
No0001Mary1SNo0001Mary1S
No0002Candy1SNo0008Katter1S
No0003Jam1SNo0021Tom1S

1. 并: R ⋃ S R \bigcup S RS

将相同的合并,取所有

-- 结果集,不允许重复值
select * from R
UNION
select * from S
> -- 结果集允许重复值
select * from R
UNION ALL
select * from S

R ⋃ S = { t ∣ t ∈ R ⋁ t ∈ S } R \bigcup S = \{ t | t \in R \bigvee t \in S \} RS={ttRtS}

SNoSNameSDept
No0001Mary1S
No0002Candy1S
No0003Jam1S
No0008Katter1S
No0021Tom1S

2. 交: R ⋂ S R \bigcap S RS

只取相同的值

select SNo, SName, SDept FROM R,S WHERE R.SNo=S.SNo
select * from r,s where r.t=s.t

R ⋂ S = { t ∣ t ∈ R ⋀ t ∈ S } R \bigcap S = \{ t | t \in R \bigwedge t \in S \} RS={ttRtS}

SNoSNameSDept
No0001Mary1S

3. 差: R − S R - S RS

取不相同的,且注意是谁在前,则显示谁的表,本例是R在前,所以以R为主显示,S不显示

R − S = { t ∣ t ∈ R ⋁ t ∉ S } R - S = \{ t | t \in R \bigvee t \notin S \} RS={ttRt/S}

SNoSNameSDept
No0002Candy1S
No0003Jam1S

4. 笛卡儿积: R × S R \times S R×S

乘法结合,两个表各3条记录,相乘则是3×3=9条记录。第一个表的每一条记录与第二个表的所有记录组合

R × S = { t ∣ t = < t n , t m > ⋀ t n ∈ R ⋀ t m ∈ S } R \times S = \{ t | t = <t^n, t^m> \bigwedge t^n \in R \bigwedge t^m \in S \} R×S={tt=<tn,tm>tnRtmS}
< t n , t m > <t^n, t^m> <tn,tm>意思为 t n t^n tn t m t^m tm拼接成一个元组

SNoSNameSDeptSNoSNameSDept
No0001Mary1SNo0001Mary1S
No0001Mary1SNo0008Katter1S
No0001Mary1SNo0021Tom1S
No0002Candy1SNo0001Mary1S
No0002Candy1SNo0008Katter1S
No0002Candy1SNo0021Tom1S
No0003Jam1SNo0001Mary1S
No0003Jam1SNo0008Katter1S
No0003Jam1SNo0021Tom1S

5. 投影: π S N o , S N a m e ( R ) \pi_{SNo,SName}(R) πSNo,SName(R)

等价 π 1 , 2 ( R ) \pi_{1,2}(R) π1,2(R),即投影第1、2个字段(书中叫 元组 t???一行记录??? )的数据

SNoSName
No0001Mary
No0002Candy
No0003Jam

6. 选择: σ S N o = N o 0002 ( R ) \sigma_{SNo=No0002}(R) σSNo=No0002(R)

等价 σ 1 = N o 0002 ( R ) \sigma_{1=No0002}(R) σ1=No0002(R),按行选择R表中的指定字段的数据
注: σ \sigma σ读西格马,希腊文大写为 Σ \Sigma Σ

SNoSName
No0002Candy

7. 自然连接: R ⋈ S R ⋈ S RS

将两表中各字段连接,且只显示相同字段,去掉重复的字段和不相等的记录

关系R关系S
SNoSNameSDeptSNoSAge
No0001Mary1SNo000123
No0002Candy1SNo000824
No0003Jam1SNo002125

7.1. 默认为等值连接 π R . m , S . n . . . ( σ R . m x = S . n y ( R × S ) ) \pi_{R.m,S.n...}(\sigma_{R.m_x=S.n_y}(R \times S)) πR.m,S.n...(σR.mx=S.ny(R×S))

select R.SNo, R.SName, R.SDept, S.SAge from R,S where R.SNo=S.SNo

R.m代表R的所有字段,S.n代表S的所有字段。
m x m_x mx n y n_y ny是指某个字段。
自然连接是不提出明确的连接条件,但 暗含 着一个条件,就是 列名相同的值也相同。在自然连接的结果表中,往往还要合并相同列名的列。当对关系R和S进行自然连接时,要求R和S含有一个或者多个共有的属性。本例中为 R . S N o = S . S N o R.SNo=S.SNo R.SNo=S.SNo(等值连接 R ⋈ S R . S N o = S . S N o \frac{R ⋈ S}{R.SNo=S.SNo} R.SNo=S.SNoRS):只取SNo字段中相同的内容且相同的列只取一列且不相同的SNo不显示,结果如下:

SNoSNameSDeptSAge
No0001Mary1S23

多列例子: R ⋈ S R . S N o = S . S N o ⋀ R . S N a m e = S . S N a m e \frac{R ⋈ S}{R.SNo=S.SNo \bigwedge R.SName=S.SName} R.SNo=S.SNoR.SName=S.SNameRS

-- 多列的情况下:以下为示例,没有展示出实际的表,假设S中也有SName字段情况下
select R.SNo, R.SName, R.SDept, S.SAge 
from R,S 
where R.SNo=S.SNo
and R.SName=S.SName

注:逻辑符号 π R . m , S . n . . . ( σ R . m x = S . n y ⋀ R . m j = S . n g ( R × S ) ) \pi_{R.m,S.n...}(\sigma_{R.m_x=S.n_y\bigwedge R.m_j=S.n_g}(R \times S)) πR.m,S.n...(σR.mx=S.nyR.mj=S.ng(R×S))

符号名称
¬ \neg ¬
⋀ \bigwedge
⋁ \bigvee

说明:在广义笛卡尔积R×S中 选出同名属性 上符合相等条件元组(即 公共值相等就连接不相等就删除 ),再进行投影,去掉重复的同名属性(列),组成新的关系。
自然连接是一种特殊的等值链接,它要求两个关系中进行比较的分量必须是相同的属性组,并且在结果中把重复的属性列去掉。
——
等价: R ⋈ S R . S N o = S . S N o \frac{R ⋈ S}{R.SNo=S.SNo} R.SNo=S.SNoRS = Π R . S N o , . . . , S . S N o , . . . ( σ R . S N o = S . S N o ( R × S ) ) \Pi_{R.SNo,...,S.SNo,...}(\sigma_{R.SNo=S.SNo}(R \times S)) ΠR.SNo,...,S.SNo,...(σR.SNo=S.SNo(R×S))
——
以下示例过程:取R.SNo,R.SName,R.SDept,S.SAge字段,且R.SNo=S.SNo,即 R ⋈ S 1 = 4 \frac{R ⋈ S}{1=4} 1=4RS= Π 1 , 2 , 3 , 5 ( σ 1 = 4 ( R × S ) ) \Pi_{1,2,3,5}(\sigma_{1=4}(R \times S)) Π1,2,3,5(σ1=4(R×S)),数字为字段顺序
注:第5版软设大纲书中有将 π \pi π为大写,根据上下文,个人理解既然是投影,大小写一样。

7.1.1. 第一步:笛卡儿积 R × S R \times S R×S

12345
SNoSNameSDeptSNoSAge
No0001Mary1SNo000123
No0001Mary1SNo000824
No0001Mary1SNo002125
No0002Candy1SNo000123
No0002Candy1SNo000824
No0002Candy1SNo002125
No0003Jam1SNo000123
No0003Jam1SNo000824
No0003Jam1SNo002125

7.1.2. 第二步:选择 σ S N o = S N o ( T ) \sigma_{SNo=SNo}(T) σSNo=SNo(T)

T 为笛卡儿积后的新表,等价 σ 1 = 4 ( S ) \sigma_{1=4}(S) σ1=4(S)。进行选择的值是通过笛卡儿积中筛选出SNo进行对比(公共值SNo),只有 R.SNo(No0001)=S.SNo(No0001) 相等,其余的不相同则删除,得到

SNoSNameSDeptSNoSAge
No0001Mary1SNo000123

7.1.3. 第三步:投影 π 1 , 2 , 3 , 5 ( T ) \pi_{1,2,3,5}(T) π1,2,3,5(T)删除重复的列

SNoSNameSDeptSAge
No0001Mary1S23

例题

  • 若对关系R(A,B,C,D)和S(C,D,E)进行关系代数运算,则表达式 π 3 , 4 , 7 ( σ 4 < 5 ( R × S ) ) \pi_{3,4,7}(\sigma_{4<5}(R\times S)) π3,4,7(σ4<5(R×S))=______,该表达式与______等价。
关系R关系S
ABCABC
30331011
2564116
58951013
8111261114
  • A.
ABC
303
489
  • B.
ABC
8116
81114
  • C.
ABC
51011
51113
  • D.
ABC
2116
21114
  • A. π C , D , E ( σ D < C ( R × S ) ) \pi_{C,D,E}(\sigma_{D<C}(R\times S)) πC,D,E(σDC(R×S))
  • B. π R . C , R . D , S . E ( σ R . D < S . C ( R × S ) ) \pi_{R.C,R.D,S.E}(\sigma_{R.D<S.C}(R\times S)) πR.C,R.D,S.E(σR.DS.C(R×S))
  • C. π C , D , E ( σ R . D < S . C ( R × S ) ) \pi_{C,D,E}(\sigma_{R.D<S.C}(R\times S)) πC,D,E(σR.DS.C(R×S))
  • D. π R . C , R . D , S . E ( σ D < C ( R × S ) ) \pi_{R.C,R.D,S.E}(\sigma_{D<C}(R\times S)) πR.C,R.D,S.E(σDC(R×S))

答案1


  1. B, B ↩︎

  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

yuandll

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值