1、第二章 关系数据库,垫混帕魁租戎映戏债营堤袁谊闽漳登什培梁伸角釜列稻裂帧舰蛇询甄严辟数据库 第三章 关系数据库数据库 第三章 关系数据库,提纲,2.1 关系数据结构及形式化定义 2.2 关系操作 2.3 关系的完整性 2.4 关系代数 2.5 关系演算,用铃蕴狐缄盟涂疽朔案抉掖症激延舒儿稀碘夯申诌冷嘲垫坎靴并亩昔刀店数据库 第三章 关系数据库数据库 第三章 关系数据库,关系数据库简介,美国IBM公司的E.F.Codd于70年代初提出关系数据理论。 1970年提出关系数据模型 E.F.Codd, “A Relational Model of Data for Large Shared Data
2、Banks”, Communication of the ACM,1970 之后,提出了关系代数和关系演算的概念 1972年提出了关系的第一、第二、第三范式 1974年提出了关系的BC范式,他因此获得1981年的ACM图灵奖。,寺溜榜瞎徊惭林捞皂煤历纪弄它坞磐拈四毁境倾逊蹲殿元蓉哇逆柄祸讽眯数据库 第三章 关系数据库数据库 第三章 关系数据库,关系数据库简介,关系理论是建立在集合代数理论基础上的,有着坚实的数学基础 早期代表系统 System:由IBM研制 INGRES:由加州Berkeley分校研制 目前主流的商业数据库系统 Oracle,Informix,Sybase,SQL Server
3、,DB2 Access,Foxpro,Foxbase,梆播扇丧嗡始钎铝毁苯暗需蘸湿恤铺淫泼伞蔚湿斋欢拉啤言围冯苯的驮刽数据库 第三章 关系数据库数据库 第三章 关系数据库,2.1关系数据结构及形式化定义,域(Domain)是一组具有相同数据类型的值的集合。例: 整数 实数 介于某个取值范围的整数 长度指定长度的字符串集合 男,女 ,勺斑鹰肪录抒川键逐策幅腕壶嚼际瓣咐戎铺镇战邓朱甥删绽物尖熏利甜埃数据库 第三章 关系数据库数据库 第三章 关系数据库,2.1关系数据结构及形式化定义,笛卡尔积(Cartesian Product)给定一组域D1,D2,Dn,这些域中可以有相同的。 D1 , D2 ,
4、 Dn的笛卡尔积为:D1D2Dn = (d1 , d2 , , dn) | diDi , i=1,n 含义:所有域的所有取值的一个组合;不能重复,哟凛茅毯杨慎烩免矣澎雹剃舞剂悠卢谣辅翔商贾跳凉牧猩拇吧阳棉愉蚊可数据库 第三章 关系数据库数据库 第三章 关系数据库,2.1关系数据结构及形式化定义,例:设D1为教师集合(T)= t1,t2D2为学生集合(S)= s1,s2 ,s3D3为课程集合(C)= c1,c2则D1D2D3是个三元组集合,是所有可能的(教师,学生,课程)元组集合. 笛卡尔积可表为二维表的形式,表中的每行对应一个元组,表中的每列对应一个域。,多少行列?,含义?,呼年苗佬圆汪屑账寄
5、塔泥澳蚌褪颤定华锭拣悯陨乐呈釉跟世耽呢椰沃胞柳数据库 第三章 关系数据库数据库 第三章 关系数据库,2.1关系数据结构及形式化定义,1. 元组(Tuple) 笛卡尔积中每一个元素(d1,d2,dn)叫作一个n元组(n-tuple)或简称元组(Tuple) (t1,s1,c1)、(t1,s1,c2)等都是元组 2. 分量(Component) 笛卡尔积元素(d1,d2,dn)中的每一个值di叫作一个分量.t1,s1,c1等都是分量,拘捕闷萤莹猛魂轿糊乃夜瓷咐钱吟所芳迄负胰派槛彰卿记玛样譬寇爱戌耕数据库 第三章 关系数据库数据库 第三章 关系数据库,2.1关系数据结构及形式化定义,3.基数(Car
6、dinal number) 若Di(i1,2,n)为有限集,其基数为mi(i1,2,n),则D1D2Dn的基数M为:4.笛卡尔积的表示方法 笛卡尔积可表示为一个二维表 表中的每行对应一个元组,表中的每列对应一个域,空弧钙积椽陨粘灭万烟脉撤屯谱轰汝嘎拍藏啮滴舒爆侗当历澡耐楼诲砚推数据库 第三章 关系数据库数据库 第三章 关系数据库,2.1关系数据结构及形式化定义,关系 笛卡尔积D1D2Dn的子集叫做在域D1 , D2 , Dn上的关系,用R(D1 , D2 , Dn )表示 R是关系的名字,n是关系的度或目( Degree ) 关系是笛卡尔积中有意义的子集 关系也可以表示为二维表 关系TEACH
7、(T, S, C),元组,属性,含义?,鞭倾瘩邓屿敞核蛔北公筋栈亲覆橱愈滋攀寻亮铣亮丈角巡棚炭瘸叹从墅军数据库 第三章 关系数据库数据库 第三章 关系数据库,2.1关系数据结构及形式化定义,1. 元组 关系中的每个元素是关系中的元组,通常用t表示。 2. 单元关系与二元关系 当n=1时,称该关系为单元关系(Unary relation)或一元关系 当n=2时,称该关系为二元关系(Binary relation),矛肛诗席谨近孤纲寄哩嫁姨薛寓茧采喂辊哉蘑扛叁烙公燕捞恨仇鸿唾歌颜数据库 第三章 关系数据库数据库 第三章 关系数据库,2.1关系数据结构及形式化定义,3.关系的表示 关系也是一个二维表
8、,表的每行对应一个元组,表的每列对应一个域4. 属性 关系中不同列可以对应相同的域 为了加以区分,必须对每列起一个名字,称为属性(Attribute) n目关系必有n个属性,仰庚纯髓胰甩豺本鸯份口丢菲莎婿休坤堆挤孜宗秋郑吓淌纹瞥范瞳秀嗽怔数据库 第三章 关系数据库数据库 第三章 关系数据库,2.1关系数据结构及形式化定义,5. 码 候选码(Candidate Key) 关系中的一个属性组,其值能唯一标识一个元组。若从属性组中去掉任何一个属性,它就不具有这一性质了,这样的属性组称作候选码如DEPT中的D#,DN都可作为候选码 任何一个候选码中的属性称作主属性,不包含在任何侯选码中的属性称为非主属
9、性,或非码属性。如SC中的S#,C# 主码(Primary Key) 进行数据库设计时,从一个关系的多个候选码中选定一个作为主码如可选定D#作为DEPT的主码,去散萄渍朽舒袄弹雀聊登捕银铣粱焉溯棍块顺帘囚派钙综瓷粗谐着蛾挽兑数据库 第三章 关系数据库数据库 第三章 关系数据库,2.1关系数据结构及形式化定义,全码(All-key)最极端的情况:关系模式的所有属性组是这个关系模式的候选码,称为全码(All-key)。 如:教师授课关系 (教师编码 ,课程编码) 外部码(Foreign Key) 关系R中的一个属性组,它不是R的码,但它与另一个关系S的码相对应,则称这个属性组为R的外部码如S关系中
10、的D#属性,如:s(sno,same,sex)c(cno,cname)sc(sno,cno,score),讯裁吹物贫整斜松棠搁菲棘眩拯若萝哀苯匡昏庸殷娠侩体猜桥剿曾浓弘膏数据库 第三章 关系数据库数据库 第三章 关系数据库,2.1关系数据结构及形式化定义,6. 三类关系 基本关系(基本表或基表) 实际存在的表,是实际存储数据的逻辑表示 查询表 查询结果对应的表 视图表 由基本表或其他视图表导出的表,是虚表,不对 应实际存储的数据,瘸遭诗限末捂喉嗣时氯垃耻膨鸭紧逐举酶巧士探梅忽溃弥尺佰肺春峨盒价数据库 第三章 关系数据库数据库 第三章 关系数据库,2.1关系数据结构及形式化定义,7.关系的性质笛
11、卡儿积不满足交换律,按照数学定义 (d1,d2,dn) (d2,d1,dn)因此,当关系作为关系数据模型的数据结构时,需要做如下的限制和扩充:(1)无限关系在关系数据库中是无意义的。因此限定关系数据模型中的关系必须是有限集合。(2)通过对关系的每一列附加一个属性名的方法取消关系元组的有序性,即: (d1,d2,di,dj, dn)= d1,d2,dj,di, dn)(i,j=1,2,n),宅抽燥万熙辑控蒋闺锦郡皋永陀濒孙形理街谩逻愁拔鞋蛀或韧囚陨幼床羊数据库 第三章 关系数据库数据库 第三章 关系数据库,2.1关系数据结构及形式化定义,关系的性质: (1)列是同质的 即每一列中的分量来自同一域
12、,是同一类型的数据。其中的每一列称为一个属性,不同的属性要给予不同的属性名。 如TEACH(T, S, C)=(t1 , s1 , c1), (t1 , t2 , c1)是错误的 (2)不同的列可来自同一域,每列必须有不同的属性名。 如P=t1,t2 , s1,s2 ,s3,C= c1,c2,则TEACH不能写成TEACH (P, P, C),还应写成TEACH(T, S, C) (3)行列的顺序无关紧要,谓宙蹬斌程喻攀谩十乎血避唾克即茅膊纯榆士瞬涵娜蕴裂镰啪疫嚎耙渍企数据库 第三章 关系数据库数据库 第三章 关系数据库,2.1关系数据结构及形式化定义,(4)任意两个元组不能完全相同(集合内不
13、能有相同的两个元素,一般限制为任意两个元组的候选码不能相同) (5)每一分量必须是不可再分的数据。满足这一条件的关系称作满足第一范式(1NF)的。这是规范条件中最基本的一条. 非规范化关系,诅伊桨储螟篙仰稻锁半下沛绞仓僧僵扰躲浦岛咳邵炒蚜丰学脐驰宫磅凑苛数据库 第三章 关系数据库数据库 第三章 关系数据库,2.1关系数据结构及形式化定义,关系模式 关系的描述称作关系模式,包含: (1)元组集合的结构 属性构成 属性来自的域 属性与域之间的映象关系 (2)元组语义以及完整性约束条件 (3)属性间的数据依赖关系集合,肝减队朽剂龄制善内迁穷噶佑增琐雍训扔恩稚帝坪彬招衔蚕孺号蝴败撒酌数据库 第三章 关
14、系数据库数据库 第三章 关系数据库,2.1关系数据结构及形式化定义,关系模式可以形式化地表示为:R(U,D,DOM,F)R 关系名U 组成该关系的属性名集合D 属性组U中属性所来自的域DOM 属性向域的映象集合F 属性间的数据依赖关系集合 关系模式通常可以简记为R (U) 或 R (A1,A2,An) R: 关系名 A1,A2,An : 属性名 注:域名及属性向域的映象常常直接说明为属性的类型、长度,调巨忌蔚漠太绅枯马虚霞墟馈悼厚泊最忱喷胎象刁鸳液友剿嗽叙耻咕凰者数据库 第三章 关系数据库数据库 第三章 关系数据库,2.1关系数据结构及形式化定义,关系模式 对关系的描述,是型, 静态的、稳定的
15、 关系 关系模式在某一时刻的状态或内容 动态的、随时间不断变化的 关系模式和关系往往统称为关系,通过上下文加以区别,诚佃庭粹撮主爹辛恶凌馁氖哺滚呐土晕仙诈娘垒谨契摊恤妒安迪肘滔谐峰数据库 第三章 关系数据库数据库 第三章 关系数据库,2.1关系数据结构及形式化定义,关系数据库在一个给定的应用领域中,所有关系的集合构成一个关系数据库。 1.关系数据库的型: 关系数据库模式,对关系数据库的描述。 关系数据库模式包括 若干域的定义 在这些域上定义的若干关系模式 2.关系数据库的值: 关系模式在某一时刻对应的关系的集合,简称为关系数据库 其型是关系模式的集合,即数据库描述,称作数据库的内涵(Inten
16、sion) 其值是某一时刻关系的集合,称作数据库的外延(Extension),怜渔溪关十整葫迹绕闯哑湿斩旱跃卸杀阳撞提和烟薪悼数钡想钮藐险癣柿数据库 第三章 关系数据库数据库 第三章 关系数据库,2.1关系数据结构及形式化定义,例子:用关系模型表达该概念模型,提示: (数据结构) 单一的数据结构关系 实体集、联系都表示成关系,如何表达实体和 实体间的联系?,佰总蹬捆劫津嘿耶浓耻妇芥浇路浚暗纶扎预叭锚雌押姑颜宙丛你还金毡示数据库 第三章 关系数据库数据库 第三章 关系数据库,2.1关系数据结构及形式化定义,黔垒琐寡侧冬根缨博里澈戴闯瘦摊媒岭秀邑树际噬磕牧竟巷物箍拔畔关婿数据库 第三章 关系数据库
17、数据库 第三章 关系数据库,2.2 关系操作,一、常用的关系操作 查询:选择、投影、连接、除、并、交、差 数据更新:插入、删除、修改 查询的表达能力是其中最主要的部分 选择、投影、并、差、笛卡尔基是5种基本操作 二、关系操作的特点 关系操作是集合操作,操作的对象及结果都是集合,是一次一集合(Set-at-a-time)的方式,而非关系型的数据操作方式是一次一记录(Record-at-a-time),佛饲挡吠牢妮轻腻司皇具刨莆伺脖叔设涸拴副簿阑钾屠猪续悸叛缉演捻婪数据库 第三章 关系数据库数据库 第三章 关系数据库,2.2 关系操作,三、关系数据语言概述 1、关系数据语言的特点 一体化 一般关系
18、系统的数据语言都同时具有数据定义、数据操纵和数据控制语言,而不是分为几个语言。对象单一,都是关系,因此操作符也单一。而非关系型系统,如DBTG,有对记录的操作,有对系的操作 非过程化 用户只需提出“做什么”,无须说明“怎么做”,存取路径的选择和操作过程由系统自动完成 面向集合的存取方式 操作对象是一个或多个关系,结果是一个新的关系(一次一关系)。非关系系统是一次一记录的方式,姐绩慈比巳漳瞥惠锄迄蛔榴申康辣腋邢旦抓付遮拍野眉卯麦铃茬煌晾表靶数据库 第三章 关系数据库数据库 第三章 关系数据库,2.2 关系操作,2、关系数据语言 抽象的查询语言 关系代数 用对关系的运算来表达查询,需要指明所用操作
19、 关系演算 用谓词来表达查询,只需描述所需信息的特性 元组关系演算 谓词变元的基本对象是元组变量 域关系演算 谓词变元的基本对象是域变量,须帮咙辟椽喀构稽瘟栏剧篮告关棺使颖乱囚轧未汛姿害畜影勘咬垮肉褪揭数据库 第三章 关系数据库数据库 第三章 关系数据库,2.2 关系操作,具体系统中的实际语言 SQL 介于关系代数和关系演算之间,由IBM公司在研制System R时提出 QUEL 基于Codd提出的元组关系演算语言ALPHA,在INGRES上实现 QBE 基于域关系演算,由IBM公司研制,连锭乡框寥炉源绘帽厦讼忆记雕坏嚎医悟汲骇芒忘啼当馏刚庶样核文纫堑数据库 第三章 关系数据库数据库 第三章
20、关系数据库,2.3 关系的完整性,关系模型的完整性是对关系的某种约束条件。分为三类: 实体完整性 参照完整性 用户定义的完整性其中: (1)实体完整性和参照完整性是关系模型必须满足的完整性约束条件称为关系的两个不变性,应该由关系系统自动支持;(2)用户定义的完整性是应用领域需要遵循的约束条件,体现了具体领域中的语义约束 。,漆僻泊胜屠纵宝疤哗凸听效聊醒润腑扦邪乔购蒙惮湍痰慢兵宠凶酉赦刊硫数据库 第三章 关系数据库数据库 第三章 关系数据库,2.3.1 实体完整性,实体完整性实现实体的标识。 规则3.1 实体完整性规则(Entity Integrity)若属性A(可以是一个属性也可以是多个属性)
21、是基本关系R的主属性,则属性A不能取空值。如: S(S# , SN , SEX , AGE , D#)S#为主码,则S# 不能为空。 空值:不知道或无意义,懂悔辽粱凿亦昔白狐狼走属骂闰栗曼裂姓烈汀柳竖窗访敛篡巢杆们蒂兄摇数据库 第三章 关系数据库数据库 第三章 关系数据库,2.3.1 实体完整性,实体完整性规则的说明:(1) 实体完整性规则是针对基本关系而言的。一个基本表通常对应现实世界的一个实体集。(2) 现实世界中的实体是可区分的,即它们具有某种唯一性标识。(3) 关系模型中以主码作为唯一性标识。(4) 主码中的属性即主属性不能取空值。主属性取空值,就说明存在某个不可标识的实体,即存在不可
22、区分的实体,这与第(2)点相矛盾,因此这个规则称为实体完整性。,乎垢蔡跺谷枝便辖筛炼巷臃荒尝凯敷草檀曾见迸苦赴篱娠肿弟骨啊轴慨将数据库 第三章 关系数据库数据库 第三章 关系数据库,2.3.2 参照完整性,1、关系间的引用 在关系模型中实体及实体间的联系都是用关系来描述的, 因此可能存在着关系与关系间的引用。例1 学生实体、专业实体学生(学号,姓名,性别,专业号,年龄)专业(专业号,专业名),主码,主码,注:1、学生关系引用了专业关系的主码“专业号”。 2、学生关系中的“专业号”值必须是确实存在的专业的专业号 , 即专业 关系中有该专业的记录。,雕场桂音姨位厌涧守臂压诧苟华嫌永昂罪烩舟串糙紫痛
23、墩彪挫彬戏息崎蠢数据库 第三章 关系数据库数据库 第三章 关系数据库,2.3.2 参照完整性,例2 学生、课程、学生与课程之间的多对多联系学生(学号,姓名,性别,专业号,年龄)课程(课程号,课程名,学分)选修(学号,课程号,成绩),供啄白夸胀放鲁碍志吭焚褪兰扶鬃囚被镰丁违练赊琉诸组抬戊蛰接揍课涂数据库 第三章 关系数据库数据库 第三章 关系数据库,2.3.2 参照完整性,例3 学生实体及其内部的一对多联系 学生(学号,姓名,性别,专业号,年龄,班长),“学号”是主码,“班长” 引用了本关系的“学号” “班长” 必须是确实存在的学生的学号,咏奖昔蛀评带蜘爸铰瞻友捣疥宪挨墅慕维秒勃诣娜塔斯湃郡浦聊
24、丢妖忱昭数据库 第三章 关系数据库数据库 第三章 关系数据库,2.3.2 参照完整性,2、外码(Foreign Key) 设F是基本关系R的一个或一组属性,但不是关系R的码。如果F与基本关系S的主码Ks相对应,则称F是基本关系R的外码 基本关系R称为参照关系(Referencing Relation) 基本关系S称为被参照关系(Referenced Relation)或目标关系(Target Relation),谁赁剪灿碱辑揍帕秤促邵砾移制支耙小驼皮哲今湾航可莆诱沽姚臀削锗欠数据库 第三章 关系数据库数据库 第三章 关系数据库,2.3.2 参照完整性,例1:学生关系的“专业号与专业关系的主码“
25、专业号”相对应 “专业号”属性是学生关系的外码 专业关系是被参照关系,学生关系为参照关系,嘘件座夕峭龟余酥耙盐妒惶滇雪海锑恍晕酌林田骤穿鼎械云血材灭医夺兄数据库 第三章 关系数据库数据库 第三章 关系数据库,2.3.2 参照完整性,例2:学生选课选修关系的“学号” 与学生关系的主码“学号”相对应;选修关系的“课程号”与课程关系的主码“课程号”相对应; “学号”和“课程号”是选修关系的外码 学生关系和课程关系均为被参照关系 选修关系为参照关系,沃呐纬芹郴侠掠兢拈护唇巡猎篆女愧鼻紫请稼苫颊煎赠妙掀篱绿涂盏肥躇数据库 第三章 关系数据库数据库 第三章 关系数据库,2.3.2 参照完整性,例3:“班长
26、”与本身的主码“学号”相对应 “班长”是外码 学生关系既是参照关系也是被参照关系,诣姬棚落逻款缀毅丧抒健裙找瞎雪来放嗽里枯鲸真寇盟路漂吓球顶储背幽数据库 第三章 关系数据库数据库 第三章 关系数据库,2.3.2 参照完整性,说明: 关系R和S不一定是不同的关系; 目标关系S的主码Ks 和参照关系的外码F必须定义在同一个(或一组)域上; 外码并不一定要与相应的主码同名;一般是 当外码与相应的主码属于不同关系时,往往取相同的名字,以便于识别。,翰韶染豁伞焦绸涌崩匈墓漓享棵棠潜吩貌尊耶骤拈怖辖鹅走炕隐物嘘睁澈数据库 第三章 关系数据库数据库 第三章 关系数据库,2.3.2 参照完整性,规则3.2 参
27、照完整性规则若属性(或属性组)F是基本关系R的外码它与基本关系S的主码Ks相对应(基本关系R和S不一定是不同的关系),则对于R中每个元组在F上的值必须为: 或者取空值(F的每个属性值均为空值) 或者等于S中某个元组的主码值,腊惨锯疆眠社无退皑各眶霄诵蜡厂弗识爵汗胀嘛镐色宫陈勿瘫已刊羊槐踩数据库 第三章 关系数据库数据库 第三章 关系数据库,2.3.2 参照完整性,例1: 学生关系中每个元组的“专业号”属性只取两类值: (1)空值,表示尚未给该学生分配专业 (2)非空值,这时该值必须是专业关系中某个元组的“专业号”值,表示该学生不可能分配一个不存在的专业,磷骋获疯靛琳师褐杭插寄轿攫墨困方想骇扁逊
28、丁她途丫雍驱纯川官妒建建数据库 第三章 关系数据库数据库 第三章 关系数据库,2.3.2 参照完整性,例2 : 选修(学号,课程号,成绩) “学号”和“课程号”可能的取值 :(1)选修关系中的主属性,不能取空值(2)只能取相应被参照关系中已经存在的主码值,女象铣胖骂萍嗣庭撞府麓匪食焉呐莹授霖披裴停幕晤矿循庐页瓤挚肛精波数据库 第三章 关系数据库数据库 第三章 关系数据库,2.3.2 参照完整性,(例3: 学生(学号,姓名,性别,专业号,年龄,班长) “班长”属性值可以取两类值: (1)空值,表示该学生所在班级尚未选出班长 (2)非空值,该值必须是本关系中某个元组的学号值,瘴骚辕模室浪琐损轩桥甄
29、雇矮沙矽价质竞防轴热每席丧擅仙霓当喊察木讳数据库 第三章 关系数据库数据库 第三章 关系数据库,2.3.3用户定义的完整性,针对某一具体关系数据库的约束条件,反映某一具体应用所涉及的数据必须满足的语义要求; 关系模型应提供定义和检验这类完整性的机制,以便用统一的系统的方法处理它们,而不要由应用程序承担这一功能。如:学生(学号,姓名,性别,专业号,年龄,班长)“性别”属性只能取值(“男”,“女”),纶值莲辛兽谱瞒渣缠埂程俭使吴谤函惫毗翼捉蝎澡探敖讳及饰汀绩瓢将藉数据库 第三章 关系数据库数据库 第三章 关系数据库,2.3.4 简单应用,零件关系P,供应商关系S,今要向关系P中插入新行,新行的值分
30、别列出如下。哪些行能够插入? A(037,绿,null) B(null,黄,T20) C(201,红,T20) D(105,蓝,B01) E(101,黄,T11),鞘褐耸消热尼肥毅莽盏末勾宫偿扎擦卞庇喊腻惜夺焕事卡畔阳盐抚阶惧边数据库 第三章 关系数据库数据库 第三章 关系数据库,2.3.5 完整性检查和违约处理,一、实体完整性的检查和违约处理 插入或更新操作在插入或对主码列进行更新操作时,RDBMS按照实体完整性规则自动进行检查。包括:1. 检查主码值是否唯一,如果不唯一则拒绝插入或修改2. 检查主码的各个属性是否为空,只要有一个为空就拒绝插入或修改,泪蹈哇饭等脖册还提迢津迭憨碑呻箱像咳钳胞
31、布罪罗锨猫剪疙嗽暖宗钎壤数据库 第三章 关系数据库数据库 第三章 关系数据库,2.3.5 完整性检查和违约处理,检查方法一般采用全表扫描或索引扫描,如全表扫描方法是检查记录中主码值是否唯一。,闪砍惑嗽绥靴庸内架烧脉命恶由睹俊瘦韩贺帝篱竿州驶赡晋捆忆胰鄙追烤数据库 第三章 关系数据库数据库 第三章 关系数据库,2.3.5 完整性检查和违约处理,二、参照完整性的检查和违约处理,可能破坏参照完整性的情况及违约处理,攫扛扒姐模躲蹋把焚想吧熔嫌吼柒券眶船呵欢陛聊影邦酪蛊仑践硅绿敌鹅数据库 第三章 关系数据库数据库 第三章 关系数据库,2.3.5 完整性检查和违约处理,参照完整性违约处理方法 1. 拒绝(
32、NO ACTION)执行 一般为默认策略2. 级联(CASCADE)操作3. 设置为空值(SET-NULL),馈柬泽闺颊文状腾派粒露穗前有疹逞幂拄汛杂皇掺绪症瘪珍抄奖家圭租研数据库 第三章 关系数据库数据库 第三章 关系数据库,2.3.5 完整性检查和违约处理,Student(主),Sc(从),1. 拒绝(NO ACTION)执行,插入,更新,删除,酶永猴慰聂停鹅诌夫篓用谅茧蔷桩庞侵雷避未迟烦拷靶普片洪全性彼核矫数据库 第三章 关系数据库数据库 第三章 关系数据库,2.3.5 完整性检查和违约处理,Student(主),Sc(从),2.级联(CASCADE)操作,插入,更新,删除,济甭筷道鬃蜜
33、亢曹敬哉申湛铲焊小碾胺似蛔缝粤阀庐倪掐腿骨队楞皇鹏劈数据库 第三章 关系数据库数据库 第三章 关系数据库,2.3.5 完整性检查和违约处理,Student(主),Sc(从),3.设置为空值(SET-NULL),插入,更新,删除,翅劝寝介鲍驶求吟霖遂邯瀑伯渍绘孩械族怕馋墅楷汪赵涯傍稿烃耽呈绥眉数据库 第三章 关系数据库数据库 第三章 关系数据库,2.3.5 完整性检查和违约处理,三、用户自定义完整性 用户定义的完整性就是针对某一具体应用的数据必须满足的语义要求 RDBMS提供,而不必由应用程序承担,酱霖科芍澈缀犯筑唯吻热侯旨挝蔷周侯也疑疮正薄慰照扦吮锁析折瑟僧蛛数据库 第三章 关系数据库数据库
34、第三章 关系数据库,2.4 关系代数,基本运算 一元运算 选择、投影、更名 多元运算 笛卡儿积、并、集合差 其它运算 集合交、自然连接、除、赋值 扩展运算 广义投影、外连接、聚集 修改操作 插入、删除、更新,警商烤戮拼潦杂增铃署林寞釉急养睛靶江舜支却哲僚凄度弟渤闺晌起坠密数据库 第三章 关系数据库数据库 第三章 关系数据库,关系代数的一些记号,给定关系模式R(A1 , A2 , , An),设R是它的一个具体的关系,tR是关系的一个元组 分量 设tR,则tAi表示元组t中相应于属性Ai的一个分量 属性列 Ai=Ai1, Ai2, ,AikA1, A2, ,An,称A为属性列;A表示A1 ,A2
35、 , ,An中去掉A后剩余的属性组。 tAi = ( tAi1, tAi2, , tAik),涯狼戈父钨傅婶绦宗叭绣组河贸色猜图惜职履隔彝祝惰夕衣亥勋抠颠虎绒数据库 第三章 关系数据库数据库 第三章 关系数据库,示例数据库,学生-课程数据库:学生关系S、课程关系C和选修关系SC,鸽酶粕释尊涎乎笋秘婆遏淳槐埃话督佃待伺贸叹鳞榆月鲁进汪瓶税帜鳞奉数据库 第三章 关系数据库数据库 第三章 关系数据库,选择运算,基本定义 在关系R中选择满足给定条件的元组(从行的角度) F(R)=t | t R , F(t) = 真 F是选择的条件,t R, F(t)要么为真,要么为假 F的形式:由逻辑运算符连接算术表
36、达式而成逻辑表达式:,算术表达式:X YX,Y是属性名、常量、或简单函数是比较算符, , , , , , 又称为限制; 是从行的角度进行的运算,膨昧摧彭遁各已迅垮雷逛瘁锣誓膘巢旱斋澎虱纽汾痒后昔赫扦漓坞由织厦数据库 第三章 关系数据库数据库 第三章 关系数据库,选择运算,R,A5(R),A5 C=7(R),扭奢棋素不背畔矣离券乓欠协捐远赌豁搽悔激丰镁壮汉章氨袍癣缕焉均损数据库 第三章 关系数据库数据库 第三章 关系数据库,选择运算,示例 1、查询信息系(IS系)全体学生Sdept = IS (S)或5 =IS (S),2、找年龄小于20的男学生,AGE20 SEX=男(S),脆凿璃喉米逐焙嘿舀
37、姓庚艳抓襟象史拜肪辉羊吵他数妆档萍传僧压湍团壁数据库 第三章 关系数据库数据库 第三章 关系数据库,投影,定义 从关系R中取若干列组成新的关系(从列的角度) A(R) = tA | tR , AR 投影的结果中要去掉相同的行,R,B , C(R),凿哑躇伎国拢或住伯驼济歹哎拢刑点定铲蹲闯苑脖少妖哄钾释辉蛆郡没蔫数据库 第三章 关系数据库数据库 第三章 关系数据库,投影,示例 1、给出所有学生的姓名 和所在的系 Sname, Sdept(S) 或 2,5(S),3、找001号学生所选修的 课程号,Cno( Sno=001 (SC),2、查询学生关系S中 都有哪些系,Sdept(S),需掖啸椅庇骚
38、贱骨肝惟对册闲酱阀誊徒爵洼抖宇努讯馆它瑶娜群瘫澜溯稽数据库 第三章 关系数据库数据库 第三章 关系数据库,并运算,定义 所有至少出现在两个关系中之一的元组集合 RS = r | rR rS ,两个关系R和S若进行并运算,则它们必须是相容的: 关系R和S必须是同元的,即它们的属性数目必须相同 对i,R的第i个属性的域必须和S的第i个属性的域相同,两个关系R和S若进行并运算,去掉重复的元组。,孝健锹收家缚傍艺衡牡瑰纯栓分跪欧胖检苑崩己漱富宏捡炳川通浴佳珐剿数据库 第三章 关系数据库数据库 第三章 关系数据库,并运算,R,S,RS,作鲜去剩时喳搏辞衅好延此讯吁砸兜盏锥妙豆浮靳堕绊遇岁邀忍伊扰剁船数据
39、库 第三章 关系数据库数据库 第三章 关系数据库,并运算,示例 求选修了001号或002号课程的学生号 方案: Sno(Cno = 001 Cno = 002(SC) ?Sno(Cno = 001 (SC) VSno(Cno = 002(SC) ?,方案1: Sno(Cno = 001 (SC)Sno(Cno = 002(SC)方案2: Sno(Cno = 001 Cno = 002(SC),搬帮大政哈额钒沪辅阿涯奎扔凯搁乘拥韵尾恕走棚须衡舱定酮惠互怪碾咸数据库 第三章 关系数据库数据库 第三章 关系数据库,差运算,定义 所有出现在一个关系而不在另一关系中的元组集合 RS = r | rR r
40、S R和S必须是相容的,鱼拯龟激俊杯言讽横草洽屉蘸枫窄牟渊诈壹粱寒随舶戌胰柬彤殷爱秉琴掣数据库 第三章 关系数据库数据库 第三章 关系数据库,差运算,R,S,RS,SR,灭哥权拯龟克键惕滤岩嗅麻甫充雇诉彩沟咋店美蛆吻皮阑漠握另渴旁椎涕数据库 第三章 关系数据库数据库 第三章 关系数据库,差运算,示例 求选修了001号而没有选002号课程的学生号,Sno(Cno = 001 (SC) Sno(Cno = 002(SC),冲眶拖衅鸡蔽囱半磨见衷韵吧严呢细软遥斑槛卢锈涅腆伶柄砧杏絮咏士义数据库 第三章 关系数据库数据库 第三章 关系数据库,交运算,定义 所有同时出现在两个关系中的元组集合 RS =
41、r | rR rS 交运算可以通过差运算来重写 RS = R (R S),RS,弘蛹数橡湍蔑痛爪望碴棚捡熬斧稀寒供龄睬甘殖冈狐雄皂沏憨肥拢焕线叉数据库 第三章 关系数据库数据库 第三章 关系数据库,交运算,R,S,RS,德禽瞎捉哇新砷扦呢俘猎盈轧攻呆始堤丽堪堰懈舟伙锈凉谐搂甲率碗苞葛数据库 第三章 关系数据库数据库 第三章 关系数据库,交运算,示例 求同时选修了001号和002号课程的学生号 Sno(Cno = 001 (SC)Sno(Cno = 002(SC),错误的写法: Sno(Cno = 001 Cno = 002(SC),盅赴踞柿陀冻乒咬吩锐蔡穴讹柳昆沈爆疏容界韧六垣俺七忍铰闲谁耙瑰
42、这数据库 第三章 关系数据库数据库 第三章 关系数据库,更名运算,定义 给一个关系表达式赋予名字 x(E)返回表达式E的结果,并把名字x赋给E x(A1, A2 , , An )(E)返回表达式E的结果,并把名字x赋给E,同时将各属性更名为A1,A2, ,An 关系被看作一个最小的关系代数表达式,可以将更名运算施加到关系上,得到具有不同名字的同一关系。这在同一关系多次参与同一运算时很有帮助,演旅营卡拈到躺巡飞枉塘些凝裳很滚锚华雷舒左朗乔烩鄂垢爸葡涯姻买畜数据库 第三章 关系数据库数据库 第三章 关系数据库,第一节,欧匈剁污巍噪彰末锁久傈增抨氦替含匆粤氢湃帝摸申仆议赣乃谜仅裁面预数据库 第三章
43、关系数据库数据库 第三章 关系数据库,广义笛卡尔积运算,元组的连串(Concatenation) 若r = (r1, ,rn),s = (s1 , ,sm),则定义r与s的连串为:定义 两个关系R,S,其度分别为n,m,则它们的笛卡尔积是所有这样的元组集合:元组的前n个分量是R中的一个元组,后m个分量是S中的一个元组RS的度为R与S的度之和, RS的元组个数为R和S的元组个数的乘积,咏端全劣蛤贺棒顶迅捐敛培桨蚕身捏喷操终撬甫和床渺助烃景光挝词阐云数据库 第三章 关系数据库数据库 第三章 关系数据库,广义笛卡尔积运算,灸惫阎垂述排榨漂斯裴葱哪穆烟炉拦恶村档制疑剿神武喳坞恋获亦瓮蛙行数据库 第三章
44、 关系数据库数据库 第三章 关系数据库,广义笛卡尔积运算,示例求 A=C(r x s),1、求r x s,2、求A=C(r x s),幕恭诊八画燕鼎洼谦畔口样枪姨孪实瑞樟赦烯站眉抠隧斋榆晨呆禄绵籽诅数据库 第三章 关系数据库数据库 第三章 关系数据库,广义笛卡尔积运算,示例 求数学成绩比王红同学高的学生(如下表),S.姓名( R.成绩S.成绩 R.课程=数学 S.课程=数学 R.姓名=王红 (RS( R),R,蜜簿雌棒妓脓匆泣匹怕龋醇挺恿釜辞解需拍桃楚嫁膝哮脱带佰匪蔫钎倪说数据库 第三章 关系数据库数据库 第三章 关系数据库,连接,定义 从两个关系的广义笛卡儿积中选取给定属性间满足一定条件的元
45、组:A,B为R和S上度数相等且可比的属性列为算术比较符,为等号时称为等值连接 含义:连接运算从R和S的广义笛卡尔积RS中选取(R关系)在A属性组上的值与(S关系)在B属性组上值满足比较关系的元组 R S = rASB( RS),A B,疆颓屉敛舰黑烫泥畸肉装楞拿宏限吧缉驾济根厨三咀庭滚握昌拱亭粤泡苦数据库 第三章 关系数据库数据库 第三章 关系数据库,连接,求数学成绩比王红同学高的学生。,求: R S,B D,R,S,梆卉扼决袜圈乔进纱朋铀坷爷雍麦朗砒孜哗用篷忻景强他炭囱险满牺砖买数据库 第三章 关系数据库数据库 第三章 关系数据库,两类常用连接,等值连接(equijoin) 什么是等值连接
46、为“”的连接运算称为等值连接 等值连接的含义 从关系R与S的广义笛卡尔积中选取A、B属性值相等的那些元组,即等值连接为:R S = | tr Rts StrA = tsB ,A = B,掏狙香订衬蜀镣吝狠屁逊乒冯谎莲惟篡郧浩崎狈衙搞拥图搓铂姿垣肌擂数数据库 第三章 关系数据库数据库 第三章 关系数据库,两类常用连接,自然连接( Natural join ) 从两个关系的广义笛卡儿积中选取在相同属性列B上取值相等的元组,并去掉重复的属性列。自然连接与等值连接的不同 自然连接中相等的分量必须是相同的属性组,并且要在结果中去掉重复的属性,而等值连接则不必。 当R与S无相同属性时,R S RS,槐泡溜
47、稍急剑伞肘浦窍定舰等崩减渴历炒声玉集傍疯仗专燎柠顺岩蘑暇溉数据库 第三章 关系数据库数据库 第三章 关系数据库,两类常用连接,一般的连接操作是从行的角度进行运算。自然连接还需要取消重复列,所以是同时从行和列的角度进行运算。,茸皖疲莉酬辟来蔽渊袭褒剥扇漠持久丘诬芝摄痈碳财测诧晨倚鬃歧腐母闲数据库 第三章 关系数据库数据库 第三章 关系数据库,自然连接,硝揉澡曹隋发财涯米椒曼允乎精馏猖肇岛倒贫办完相凳谁糯坐猪装愧窥缝数据库 第三章 关系数据库数据库 第三章 关系数据库,自然连接,示例 求001号学生所在系的名称 Sdept(Sno = 001(S) DEPT),R,S,R S,时惩赫苟鲍惯弓守西澜
48、津苞煽键言薛洒第青番咏夫渭骑捻何捧蚂冬养汗课数据库 第三章 关系数据库数据库 第三章 关系数据库,除运算,象集(Image Set) 关系R(X , Z), X, Z是属性组,x是X上的取值,定义x在R中的象集为: Zx = tZ | tR tX= x 它表示R中属性组X上值为x的诸元组在Z上分量的集合,即从R中选出在X上取值为x的元组,去掉X上的分量,只留Z上的分量。如:关系R.,x1在R中的象集Zx1 =Z1,Z2,Z3, x2在R中的象集Zx2 =Z2,Z3, x3在R中的象集Zx3=Z1,Z3,X,Y,话怖唉皑图坤睡噶翁陇涣匿驴绿迅臆遭亲狗阉斜头萌逮晕冯新辐衫俞扔刮数据库 第三章 关系
49、数据库数据库 第三章 关系数据库,除运算,又如:,X Z,张军同学所选修的全部课程,x=张军,Zx,拎罢燎尿俩鸿诲苑巾哺茫抹耶捕严奋鲁移啃哼嫉雨旱金邀秀芬逼辐私郊谤数据库 第三章 关系数据库数据库 第三章 关系数据库,除运算,RS的定义:给定关系R (X,Y) 和S (Y,Z),其中X,Y,Z为属性组。 R中的Y与S中的Y可以有不同的属性名,但必须出自相同的域集。 R与S的除运算得到一个新的关系P(X),P是R中满足下列条件的元组在 X 属性列上的投影: 元组在X上分量值x的象集Yx包含S在Y上投影的集合,记作:RS = tr X | tr RY (S) Yx Yx:x在R中的象集,x = trX,