日期:2014-05-17  浏览次数:20659 次

【投影运算】由于关系是一个集合,所以结果中所有的重复行均需被去掉。【怎样理解这里说的重复行被去掉?】
假如在某个给定关系中,现在只想要某个或者某几个属性,而不关心其他属性时,投影运算可以满足这样的要求。关系R上的投影是从R中选择若干列属性列组成新的关系记作∏A(R)={t[A] | t },其中A为R中的属性列。由于关系是一个集合,所以结果中所有的重复行均需被去掉。
疑问:
重复行怎样被去掉了?
对关系R进行投影运算后,得到关系S,关系R的元组数等于关系S的元组数。
那么重复行是指什么?
能否示例说明 ?
 
附:
集合中元素的特性
(1)确定性:给定一个集合,任何对象是不是这个集合的元素是确定的了.
(2)互异性:集合中的元素一定是不同的.
(3)无序性:集合中的元素没有固定的顺序.
投影运算 集合

------解决方案--------------------
lz的意思我不是很清楚
但是关于关系或者是外键的约束是主键或者具有unique约束。
对于你关联的外键,必须是唯一的,不能存在重复。
------解决方案--------------------
Select *
From sc;
----------------
Select sno
From sc;
-----------------
1
2
3
1
2
3
1

从数学角度,集合{1,2,3}、{1,2,3,1,2,3,1}是相等的,T-SQl支持重复集合,因此没有去掉重复行,
除非指定Dinstinct关键字。楼主可以去了解一下多重集合理论。
------解决方案--------------------
很多年没搞关系理论了,不太记得了,但是从应用角度上来说,一个表,基本上就不应该存在完全重复的数据,因为(这里用SQLServer做例子)假设有一个表A,列a,b,其中第一第二行的数据均为1,2,当你要查询A表中where a=1 and b=2是,即使不抱错,查询出来的数据也是没有意义,而且当用户使用的时候,用户就蒙了,是要使用第二行呢?还是使用第一行呢?这里就引出了一个主键的概念,主键可以唯一标识一行数据,在上面例子中,可以加上一列id,然后自增,那么第一二行就成为了不同的行。
------解决方案--------------------
首先,如果没有扎实的关系理论作为基础,单靠经验,我不相信能设计出很优秀的关系数据库系统,顶多是歪打正着,就好像算法一样,它是一个模型,或者说是一个通用的架构,面对现实问题时要抽丝剥茧,然后找出对应的模型,然后套到对应的算法上面,那么问题基本上就解决了。所以理论很重要。
其次,你这题答案是A?我怎么觉得是D,因为按照你3楼的那句话,重复行被去掉,那么得到的行数应该是小于等于原来的行数,而我记得元组应该是指行吧?
------解决方案--------------------
引用:
Quote: 引用:

首先,如果没有扎实的关系理论作为基础,单靠经验,我不相信能设计出很优秀的关系数据库系统,顶多是歪打正着,就好像算法一样,它是一个模型,或者说是一个通用的架构,面对现实问题时要抽丝剥茧,然后找出对应的模型,然后套到对应的算法上面,那么问题基本上就解决了。所以理论很重要。
其次,你这题答案是A?我怎么觉得是D,因为按照你3楼的那句话,重复行被去掉,那么得到的行数应该是小于等于原来的行数,而我记得元组应该是指行吧?


嗯嗯,多谢你的条理性提醒!
是我搞错答案了。。你说得对,正确答案应该是D.
补充:
元组:关系中的元组即二维表中的记录,也即行
属性:关系中的字段即二维表中的字段,也即列,有N列,即该关系有N组属性 
那就行,身边没书,也不是很确定元组是指什么。