1关系数据模型的DBMS:ORACLESYBASEINFORMIXDB2SQL-SERVER(微软)关系数据库是采用关系模型建立的数据库。第3章关系数据模型与关系代数几种主要的数据模型:层次、网状、关系、面向对象、对象关系等2例:学生学号姓名年龄班级010801张雨200108010802李新190108010803陈辰190108010901刘影2001093.1.1基本概念关系是命名的二维表,用来描述事物及事物间的联系。3学号课程号成绩010802c01A010802c03B010801c02B010801c04C010801c01A010901c02D010901c03B学生选课4学号姓名年龄班级010801张雨200108010802李新190108010803陈辰190108010901刘影200109属性:关系中的各列。属性名即列名.如:学生关系中有学号姓名年龄班级4个属性(属性组/属性集合)5如:长〈20的字符串10~1000间整数日期在1900/1/1---2020/1/1之间域:属性的取值范围6元组:关系中的各行。上面的学生关系有4个元组元组集合其中一个是:(‘010801’,‘张雨’,20,‘0108’)元组的分量:元组中与属性相对应的值如:张雨----------第1个元组,对应属性:姓名7关系有如下性质:5)没有重复的元组6)元组分量不可再分3)按属性名引用时,属性左右无序4)元组上下无序1)同属性(列)各分量取自同一域2)不同属性(列)可以取自同一域8学号姓名年龄班级010801张雨200108010803陈辰190108010802李新190108010901刘影200109等价的关系学号姓名年龄班级010801张雨200108010802李新190108010803陈辰190108010901刘影2001099学号姓名年龄班级010801张雨200108010802李新190108010803陈辰190108010901刘影200109学号姓名班级年龄010801张雨010820010802李新010819010803陈辰010819010901刘影010920等价的关系10学号姓名年龄班级010801张雨200108010802李新190108010803陈辰190108010901刘影200109学号姓名年龄班级010801张雨200108010802李新190108010803陈辰190108刘影退学关系是随时间变化的11关系的实例:给定的(某一时刻的)关系中元组的集合关系模式是相对稳定的关系模式:关系名和关系的属性集合如:学生(学号,姓名,年龄,班级)影片(片名,年份,片长,体裁)12关系由表头、表体组成表头各属性关系模式非时变表体各元组DB当前状态时变的关系实例关系模式与关系实例13关系数据库就是相关关系组成的集合。关系模型中,数据库设计就是设计一组关系模式-------数据库模式例:供应商-零件数据库有如下3个关系模式Suppliers(Sno,Sname,State,City)Parts(Pno,Pname,Color,Weight)SP(Sno,Pno,Quantity)14键(码/候选码/关键字):关系中某一属性组能够唯一地标识元组,并且从中去掉任一属性则不能唯一地标识元组,称该属性组为键。#E-R图中键只涉及实体集唯一性最小性3.1.2关于键(Key)15学号课程号成绩010802c01A010802c03B010801c02B010801c04C010801c01A010901c02D010901c03B键=(学号,课程号)学生选课16影片(片名,年份,片长,体裁)键=(片名,年份)学生(学号,姓名,年龄,班级)键=学号17主键:关系可以有多个键,选一个作为主键。例:学生(学号,姓名,性别,年龄,身份证号)学号和身份证号都是键,选一个作主键。18超键:关系中某一属性组能够唯一地标识元组只满足唯一性本质:其中包含键还有哪些超键?键一定是超键?超键一定是键?例:供应商关系Suppliers(Sno,Sname,State,City)(Sno,Sname)不是键,是超键。19#关系中全部属性作键:供应(供应商,超市,商品)键=(供应商,超市,商品)C_T_B(课程,教师,参考书)键=(课程,教师,参考书)203.1.3关系模型的完整性规则③用户定义完整性DBMS提供定义与校验机制①实体完整性②参照完整性一般性规则DBMS自动支持21实体完整性:关系R中,任意一个键属性不能取空值。例:影片(片名,年份,片长,体裁)键属性?主属性有空值无法标识元组键唯一性确保唯一标识影片解释:键唯一决定元组描述实体时,键唯一地标识实体值22外键:若关系R的一个属性(或属性组)X,不是R的主键,而是(/对应)另一个关系S的主键,则称X为关系R的外键;称R为参照关系、称S为被参照关系。主键?键?23例:外键不是主键的组成部分(一对多)Employees(Eno,Ename,Sex,Age,Dno)Departments(Dno,Dname,Location,Phone)Employees中Dno是外键Employees参照关系Departments被参照关系24例:外键是主键的组成部分(多对多)SP中Pno是外键SP参照关系Parts被参照关系Parts(Pno,Pname,Color,Weight)SP(Sno,Pno,Quantity)SP中Sno是外键SP参照关系Suppliers被参照关系Suppliers(Sno,Sname,State,City)SP(Sno,Pno,Quantity)25参照完整性:若关系R包含一个与另一个关系S的主键匹配的外键,则关系R中的该外键的每一非空值必须:等于S某元组的主键。例:Employees(Eno,Ename,Sex,Age,Dno)Departments(Dno,Dname,Location,Phone)外键是将DB中各关系粘连在一起的“粘结剂”。26EmployeesEnoEnameAgeDnoE1张..32D1E2王…45D1E3赵..28D2E4李..36D2E5陈..37D3DepartmentsDnoDnameLocationPhoneD1管理1号楼3002D2经营5号楼211427用户定义的完整性:与具体应用问题相关的特定的完整性要求如:年龄:16-24下属的薪金不得高于上司的不得在周末更新数据…….出现特殊情况,做一系列操作283.1.4从E/R图到关系数据库模式的转换关系模式R(A1,A2,…,An)数据库模式:一组相关的关系模式29Students(Sno,Sname,Sage,Sdept)Students3.1.4.1实体集到关系模式的转换对于每一个非弱实体集:建立一个与之同名具有相同属性集的关系模式。30Movies(title,year,length,genre)Stars(name,address)Studios(name,address)例:P75图4-2其中3个实体集对应如下关系模式:313.1.4.2联系到关系模式的转换对联系建立关系模式联系涉及的每一个实体集的键作为该关系模式的属性,联系的属性作为该关系模式的属性。避免属性重名多对多多对一?32MoviesStudiosOwns这方法好吗?其他方法?其中联系Owns对应关系模式:Owns(title,year,studioName)例:33转换多对一联系的另一种方法:Movies(title,year,length,genre,studioName)类似:Employees(Eno,Ename,Eage,Dno)多的一方外键Departments(Dno,Dname,Phone)注意:此方法,当外键非空或很少出现空值时可取34多对多联系Stars_In对应关系模式:Stars_In(title,year,starName)MoviesStarsStarts-In此关系模式可合并到其他模式中吗?35转换多对多联系的其他例:学生数据库SC(Sno,Cno,Grade)“学生”键,“课程”键,联系的属性供应商数据库SP(Sno,Pno,Quantity)“供应商”键,“零件”键,联系的属性*多对多或带联系的属性一定单独设计关系模式36P93例4.27图4-25StarsStudiosMoviesContracts四路联系37多路联系Contacts转换为关系模式:Contacts(starName,title,year,studioOfStar,producingStudio)影星所属公司电影制作公司*多元(路)联系一定单独设计关系模式注意:属性不能重名38“一对一”联系转换为关系模式班级班主任负责班级(班号,人数,入学年份)班主任(职工号,姓名,年龄,经验)方案一:将联系独立建表:负责(班号,职工号)39方案二:一方的“键”存入另一方的关系模式班级(班号,人数,入学年份,班主任职工号)或:班主任(职工号,姓名,年龄,经验,班号)40一元递归联系转换为关系模式例如:职工(职工号,姓名,工龄,直接上级)多对一或一对一独立建关系模式或在实体集对应的关系模式中表达多对多必须单独建关系模式413.1.4.3处理弱实体集StudiosUnitofCrewsnumbernameaddr例:P95图4-2842弱实体集CrewsCrews(number,studioName)几点考虑:1.建立关系模式,包含弱实体集的属性及弱实体集所附属的实体集的键。实体集StudiosStudios(name,addr)43描述“双菱形”联系包含弱实体集的键及弱实体集所附属的实体集的键。“双菱形”联系Unit-ofUnit-of(number,studioName,name)2.建立关系模式443.由2所得是弱实体集对应关系模式的子集。2可以不做。不必建立Unit-ofUnit-of(number,studioName,name)就是Crews(number,studioName)studioName就是name45结论对于弱实体集:建立关系模式,包含弱实体集的属性及弱实体集所附属的实体集的键。对于“双菱形”联系:无须构造关系模式。463.1.4.4子类到关系模式的转换P98例4.31图4-31有关卡通片谋杀片#关系模型中表示“isa”47MoviesisaiisaCartoonsMurder-Mysterislengthvoiceweapongenretitleyear凶杀片48超类实体集:超类实体集Movies:Movies(title,year,length,genre)建立一个与之同名具有相同属性集的关系模式。49子类实体集:子类实体集Murder-MysteriesMurder-Mysteries(title,year,weapon)子类实体集CartoonsCartoons(title,year)除原有属性外,包含超类实体集的键即通过相同键描述isa联系50对联系VoiceVoice(starName,title,year)**Cartoons是Voice的子集保留Cartoons吗?**对于卡通谋杀片配音从voice获得武器从MurderMysteries获得如果有无声的卡通片?51结果:Movies(title,year,length,genre)Cartoons(title,year)Murder-Mysteries(title,year,weapon)Voice(starName,title,year)考虑有无声卡通片保留Cartoons52#利用NULL值合并关系表示类的分层结构卡通谋杀片均为非空卡通片weapon为NULL谋杀片voicestarName为NULLMovies(title,year,length,genre,voicestarName,weapon)允许NULL将所有属性放入一张表即使用一个关系对于P98图4-3153弊:大量空值浪费空间影响处理速度