程序员考试问题,请高手回答

zhaomaster 2003-08-19 10:02:10
(2001年试题8)
设有如下两个关系U和V,则U|×|V运算结果的元组个数是 __A__,属性个数是__B__;U|×|V运算结果的元组
2=1
个 数是__C__,属性个数是__D__。

U: A B C V: B C D
3 2 1 2 4 3
6 5 4 2 6 4
9 8 7 8 0 7
8 7 9
ER 模型可以转换成关系模型。当两个实体间联系是 M:N 联系时,它通常可转换成__E__个关系模式。
供选择的答案:
A: ①1 ②2 ③3 ④4
B: ①6 ②5 ③4 ④3
C: ①1 ②2 ③3 ④4
D: ①6 ②5 ③4 ④3
E: ①Z ②3 ③M+N ④M×N


联接操作又称"θ联接"。联接运算是从关系R和S的笛卡儿积中选取属性值之间满足一定条件的元组,记为R|×|S,这里i和j分别是关系R和S中第i个、第j个属性。
iθj
形式定义如下:
R|×|S≡σiθ(i+j)(R×S)
iθj
这里R的元数是r,θ是算术比较运算符。R|×|S操作是在R和S的笛卡儿积中挑选第i个
iθj
分量和第(r+j)个分量满足θ运算的元组组成新的关系。如果θ是等号"=",那么这个联接操作称为"等值联接"。
自然联接(Natural Join)是构造新关系的有效方法,是关系代数中常用的一种运算。利用投影、选择和自然联接操作可以任意地分割和构造关系。一般,自然联接使用在R和S有公共属性的情况中。如果两个关系没有公共属性,那么它们的自然联接就化为笛卡儿积。
两个关系R和S的自然联接用R|×|S表示,具体计算过程如下:
计算 R×S;
设R和S的公共属性是A1,A2,…,Ak,挑选R×S中满足R.A1=S.A1, R.A2, …,R.Ak=S.Ak的那些元组:
去掉S.A1, S.A2, …,S.Ak列。
因而R|×|S可用下式形式定义:
R|×|S≡πi1, i2, …, im(σR.A1=S.A1∧…∧R.Ak=S.Ak(R×S)

谁能帮我解释一下 R|x|S怎么算?能帮我把具体的过程写一下吗?就题论题。
...全文
16 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
hongfeeling 2003-08-19
  • 打赏
  • 举报
回复
第三步 把v.b和v.c列删除。得到
A B C D
3 2 1 3
3 2 1 4

6 5 4 3
6 5 4 4


9 8 7 7
9 8 7 9
hongfeeling 2003-08-19
  • 打赏
  • 举报
回复
然后看以下U,V的共同属性 有两个 B,C
然后 把 符合 U.B=V.B 或 U.C = V.C 的元组留下来。
得到如下:U.A U.B U.C V.B V.C V.D
3 2 1 2 4 3
3 2 1 2 6 4

6 5 4 2 4 3
6 5 4 2 6 4


9 8 7 8 0 7
9 8 7 8 7 9

hongfeeling 2003-08-19
  • 打赏
  • 举报
回复
算算那个自然连接吧。
U×V 得到:U.A U.B U.C V.B V.C V.D
3 2 1 2 4 3
3 2 1 2 6 4
3 2 1 8 0 7
3 2 1 8 7 9
6 5 4 2 4 3
6 5 4 2 6 4
6 5 4 8 0 7
6 5 4 8 7 9
9 8 7 2 4 3
9 8 7 2 6 4
9 8 7 8 0 7
9 8 7 8 7 9
这是第一步

69,369

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧