广义笛卡尔积, 搞了我一天半时间了?

lettermail4 2003-08-26 09:29:17
笛卡尔这个东西, 还真气死人。
看数据库的书。涉及到广义笛卡尔积, 书上说得不详细, 看了就是不明,
本来老早就想发贴, 因为这个东西就要图, 文字很难描述。 于是上网找资料, 但是找了很久都找不到。 于是查书, 但都说得不详细, 只查到下面这个东西

广义笛卡尔积--两个分别为N目和M目的关系R和S的广义笛卡尔积是一个(N+M)列的元组的集合。元组的前N列是关系R的一个元组, 后M列是关系S的一个元组。 若R有a个元组, S有b个元组, 则R与S的笛卡尔积有a*b 个元组

随后书上就作了一个例子
关系R:
A: a1 a1 a2
B: b1 b2 b2
C: c1 c2 c1

关系S:
A: a1 a1 a2
B: b2 b3 b2
C: c2 c2 c1

结果:
A:a1 a1 a1 a1 a1 a1 a2 a2 a2
B: b1 b1 b1 b2 b2 b2 b2 b2 b2
C: c1 c1 c1 c2 c2 c2 c1 c1 c1
A: a1 a1 a2 a1 a1 a2 a1 a1 a2
B: b2 b3 b2 b2 b3 b2 b2 b3 b2
c: c2 c2 c1 c2 c2 c1 c2 c2 c1

我真是不明, 真是不明, 结果是怎样来的? God help me !
请讲得详细点, 小弟资质很差。
thany you my god!
...全文
1137 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
txlicenhe 2003-08-27
  • 打赏
  • 举报
回复
按数组的概念类比。a[3][3]中的数据有
a[0][0] a[0][1] a[0][2]
a[1][0] a[1][1] a[1][2]
a[2][0] a[2][1] a[2][2]

treeforest 2003-08-26
  • 打赏
  • 举报
回复 1
关系R有3个属性:A,B,C;有3个记录:
a1,b1,c1;
a1,b2,c2;
a2,b2,c1;

关系S有3个属性:A,B,C;有3个记录:
a1,b2,c2;
a1,b3,c2;
a2,b2,c1;

然后将R*S,得到:将R中的第1个记录(a1,b1,c1)与S中的3个记录“相乘”,得到:
a1,b1,c1,a1,b2,c2;
a1,b1,c1,a1,b3,c2;
a1,b1,c1,a2,b2,c1;

将R中的第2个记录(a1,b1,c1)与S中的3个记录“相乘”,得到:
a1,b3,c2,a1,b2,c2;
a1,b3,c2,a1,b3,c2;
a1,b3,c2,a2,b2,c1;

将R中的第3个记录(a1,b1,c1)与S中的3个记录“相乘”,得到:
a2,b2,c1,a1,b2,c2;
a2,b2,c1,a1,b3,c2;
a2,b2,c1,a2,b2,c1;

然后在按照A,B,C属性写成竖排形式:
A:a1 a1 a1 a1 a1 a1 a2 a2 a2
B: b1 b1 b1 b2 b2 b2 b2 b2 b2
C: c1 c1 c1 c2 c2 c2 c1 c1 c1
A: a1 a1 a2 a1 a1 a2 a1 a1 a2
B: b2 b3 b2 b2 b3 b2 b2 b3 b2
c: c2 c2 c1 c2 c2 c1 c2 c2 c1
zarge 2003-08-26
  • 打赏
  • 举报
回复
create table R
(
A char(2),
B char(2),
C char(2)
)

create table S
(
A char(2),
B char(2),
C char(2)
)

insert into R values('a1', 'b1', 'c1')
insert into R values('a1', 'b2', 'c2')
insert into R values('a2', 'b2', 'c1')

insert into S values('a1', 'b2', 'c2')
insert into S values('a1', 'b3', 'c2')
insert into S values('a2', 'b2', 'c1')

select * from R cross join S

结果:
A B C A B C
---- ---- ---- ---- ---- ----
a1 b1 c1 a1 b2 c2
a1 b2 c2 a1 b2 c2
a2 b2 c1 a1 b2 c2
a1 b1 c1 a1 b3 c2
a1 b2 c2 a1 b3 c2
a2 b2 c1 a1 b3 c2
a1 b1 c1 a2 b2 c1
a1 b2 c2 a2 b2 c1
a2 b2 c1 a2 b2 c1
hjb111 2003-08-26
  • 打赏
  • 举报
回复
应当为这样吧!

a1 a1 a2 a1 a1 a2
a1 a1 a2 b2 b3 b2
a1 a1 a2 c2 c2 c1
b1 b2 b2 a1 a1 a2
b1 b2 b2 b2 b3 b2
b1 b2 b2 c2 c2 c1
c1 c2 c1 a1 a1 a2
c1 c2 c1 b2 b3 b2
c1 c2 c1 c2 c2 c1
pengdali 2003-08-26
  • 打赏
  • 举报
回复
select * from R,S

34,874

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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