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

解决方案 »

  1.   

    lz的意思我不是很清楚
    但是关于关系或者是外键的约束是主键或者具有unique约束。
    对于你关联的外键,必须是唯一的,不能存在重复。
      

  2.   

    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关键字。楼主可以去了解一下多重集合理论。
      

  3.   


    嗯嗯,你的示例数据的确说明:T-SQl支持重复集合,因此没有去掉重复行,但“去掉重复行”的说法是引自一书--(大专院校数据库考证参考教材):精通SQL语言与数据库管理(杨章伟) - 下载频道 - CSDN.NET
    http://download.csdn.net/detail/sansong2005/4208186
      

  4.   

    很多年没搞关系理论了,不太记得了,但是从应用角度上来说,一个表,基本上就不应该存在完全重复的数据,因为(这里用SQLServer做例子)假设有一个表A,列a,b,其中第一第二行的数据均为1,2,当你要查询A表中where a=1 and b=2是,即使不抱错,查询出来的数据也是没有意义,而且当用户使用的时候,用户就蒙了,是要使用第二行呢?还是使用第一行呢?这里就引出了一个主键的概念,主键可以唯一标识一行数据,在上面例子中,可以加上一列id,然后自增,那么第一二行就成为了不同的行。
      

  5.   


    呵呵,谢谢版主大人的详细讲解,关系理论这些东西在实际中应用得多不多呢?还是多用于理论考试或学术研究方面呢?
    这外帖子讨论的重点是话题是:投影。看一看这个题目:
    对关系R进行投影运算后,得到关系S,则(  )。
    (A) 关系R的元组数等于关系S的元组数 
    (B) 关系R的元组数小于关系S的元组数
    (C) 关系R的元组数大于关系S的元组数 
    (D) 关系R的元组数大于或等于关系S的元组数这题目应该选哪个呢?根据上面的说法:在某个给定关系中,现在只想要某个或者某几个属性,而不关心其他属性时,投影运算可以满足这样的要求。关系R上的投影是从R中选择若干列属性列组成新的关系记作∏A(R)={t[A] | t },其中A为R中的属性列那么,以下这样解释对吗?
    投影运算后,只影响关系S中的属性列数,不影响元组数,所以选A。
      

  6.   


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

  7.   


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