关系数据库关系代数运算.ppt
参照完整性规则举例“班长”属性值可以取两类值:空值,表示该学生所在班级尚未选出班长,或该学生本人即是班长;非空值,这时该值必须是本关系中某个元组的学号值学生(学号,姓名,性别,专业号,年龄,班长)第31页,共81页,星期日,2025年,2月5日用户定义的完整性用户定义的完整性是针对某一具体关系数据库的约束条件,反映某一具体应用所涉及的数据必须满足的语义要求关系模型应提供定义和检验这类完整性的机制,以便用统一的系统的方法处理它们,而不要由应用程序承担这一功能第32页,共81页,星期日,2025年,2月5日用户定义的完整性举例“课程名”属性必须取唯一值非主属性“课程名”也不能取空值“学分”属性只能取值{1,2,3,4}其它成绩:0-100之间身份证位数、身份证和生日对应关系课程(课程号,课程名,学分)第33页,共81页,星期日,2025年,2月5日2.4关系代数关系代数语言用传统的集合运算和专门的关系运算来表达查询的抽象语言关系代数运算符关系代数表达式关系代数中有限次运算复合后形成的式子运算符含义运算符含义集合运算符并差交广义笛卡尔积比较运算符===大于大于等于小于小于等于等于不等于专门的关系运算符选择投影连接除逻辑运算符非与或第34页,共81页,星期日,2025年,2月5日表示记号R,t?R,t[Ai],A,t[A],A设关系模式为R(A1,A2,…,An),它的一个关系设为Rt?R表示t是R的一个元组t[Ai]则表示元组t中相应于属性Ai的一个分量若A={Ai1,Ai2,…,Aik},其中Ai1,Ai2,…,Aik是A1,A2,…,An中的一部分,则A称为属性列或域列t[A]=(t[Ai1],t[Ai2],…,t[Aik])表示元组t在属性列A上诸分量的集合A则表示{A1,A2,…,An}中去掉{Ai1,Ai2,…,Aik}后剩余的属性组第35页,共81页,星期日,2025年,2月5日传统的集合运算若R和S是同类关系(即它们都具有n个属性且相应属性取自同一个域),则可进行并、差、交运算对两者进行集合运算之前,要对两者的属性列进行排序,保证两个关系的属性顺序相同由属于R或属于S的元组组成由属于R而不属于S的元组组成由既属于R又属于S的元组组成RS第36页,共81页,星期日,2025年,2月5日表示记号trtsR为n目关系,S为m目关系tr?R,ts?S,trts称为元组的连接。它是一个n+m列的元组,前n个分量为R中的一个n元组,后m个分量为S中的一个m元组第37页,共81页,星期日,2025年,2月5日广义笛卡尔积R×S,其关系模式是R和S的模式的并集,是R和S的元组以所有可能的方式组合起来。当R和S有同名的属性,至少要为其中一个属性重新命名。数学描述:若关系R有k1个元组n个属性,关系S有k2个元组m个属性,则两个关系的广义笛卡尔积有k1*k2个元组n+m个属性(前n个属性来自于R,后m个属性来自于S)广义笛卡尔积和笛卡尔积的关系?运算对象?什么情况下二者等价?第38页,共81页,星期日,2025年,2月5日R?SABCa1b1c1a1b2c2a2b2c1a1b3c2R?SABCa1b2c2a2b2c1R-SABCa1b1c1R?SR.AR.BR.CS.AS.BS.Ca1b1c1a1b2c2a1b1c1a1b3c2a1b1c1a2b2c1a1b2c2