数据库第三章关系数据库.ppt
投影定义从关系R中取若干列组成新的关系(从列的角度)?A(R)={t[A]|t?R},A?R投影的结果中要去掉相同的行cbcfedcbaCBABCbcefR?B,C(R)π投影示例1、给出所有学生的姓名和所在的系?Sname,Sdept(S)或π2,5(S)3、找001号学生所选修的课程号SnameSdept李勇CS刘晨IS王敏MA张立IS?Cno(?Sno=001(SC))2、查询学生关系S中都有哪些系πSdept(S)并运算定义所有至少出现在两个关系中之一的元组集合R?S={r|r?R?r?S}R?S两个关系R和S若进行并运算,则它们必须是相容的:关系R和S必须是同元的,即它们的属性数目必须相同对?i,R的第i个属性的域必须和S的第i个属性的域相同两个关系R和S若进行并运算,去掉重复的元组。并运算ABC367257723443RABC345723SABC367257723443345R∪S并运算示例求选修了001号或002号课程的学生号方案:∏Sno(?Cno=001^Cno=002(SC))?∏Sno(?Cno=001(SC))V∏Sno(?Cno=002(SC))? 方案1:∏Sno(?Cno=001(SC))∪∏Sno(?Cno=002(SC)) 方案2:∏Sno(?Cno=001∨Cno=002(SC))差运算R?S定义所有出现在一个关系而不在另一关系中的元组集合R?S={r|r?R?r?S}R和S必须是相容的差运算ABC367257723443RABC345723SABC367257443R-SABC367S-RAB求选修了001号而没有选002号课程的学生号A∏Sno(?Cno=001(SC))-∏Sno(?Cno=002(SC))B示例差运算定义所有同时出现在两个关系中的元组集合R?S={r|r?R?r?S}交运算可以通过差运算来重写R?S=R?(R?S)R?S交运算交运算ABC367257723443RABC345723SABC723R∩S交运算示例求同时选修了001号和002号课程的学生号∏Sno(?Cno=001(SC))∩∏Sno(?Cno=002(SC))错误的写法:∏Sno(?Cno=001?Cno=002(SC))Why?更名运算定义给一个关系表达式赋予名字?x(E) 返回表达式E的结果,并把名字x赋给E?x(A1,A2,?,An)(E) 返回表达式E的结果,并把名字x赋给E,同时将各属性更名为A1,A2,?,An关系被看作一个最小的关系代数表达式,可以将更名运算施加到关系上,得到具有不同名字的同一关系。这在同一关系多次参与同一运算时很有帮助第一节广义笛卡尔积运算元组的连串(Concatenation)若r=(r1,…,rn),s=(s1,…,sm),则定义r与s的连串为:定义两个关系R,S,其度分别为n,m,则它们的笛卡尔积是所有这样的元组集合:元组的前n个分量是R中的一个元组,后m个分量是S中的一个元组R?S的度为R与S的度之和,R?S的元组个数为R和S的元组个数的乘积rs=(r1,…,rn,s1,…,sm)R?S={rs|r?R?s?S}广义笛卡尔积运算AB??12rCD????10102010EaabbsAB????????11112222CD????????1010201010102010Eaabbaabbrxs广义笛卡尔积运算示例求?A=C(rxs)AB????????11112222CD????
????1019201010102010EaabbaabbABCDE???122