第2章关系数据库2.1关系模型的数据结构及其形式化定义2.2关系的码与关系的完整性2.3关系代数2.1关系模型的数据结构及其形式化定义2.1.1关系的形式化定义及其有关概念1.域(Domain)•域是一组具有相同数据类型的值的集合,又称为值域。•域中所包含的值的个数称为域的基数(用m表示)。例如:域名D1={李力,王平,刘伟},m1=3;D2={男,女};m2=2;D3={18,20,16};m3=3。2网络与计算中心基础教研室第3/80页1.域姓名={。。。}?性别={。。。。}?2.姓名×性别={。。。。}?数据库技术与应用2.笛卡尔积(CartesianProduct)•给定一组域D1,D2,…,Dn(它们可以包含相同的元素,即可以完全不同,也可以部分或全部相同)。D1,D2,…,Dn的笛卡尔积为:D1×D2×…×Dn={(d1,d2,…,dn)|di∈Di,i=1,2,…,n}•每一个元素(d1,d2,…,dn)中的每一个值di叫做一个分量(Component),di∈Di•每一个元素(d1,d2,…,dn)叫做一个n元组(n-Tuple),简称元组(Tuple)4数据库技术与应用•笛卡尔积D1×D2×…×Dn的基数M(即元素(d1,d2,…,dn)的个数)为所有域的基数的累乘之积,即:niimM1•例如,上述表示教师关系中姓名、性别两个域的笛卡尔积为:D1×D2={(李力,男),(李力,女),(王平,男),(王平,女),(刘伟,男),(刘伟,女)}分量:李力、王平、刘伟、男、女元组:(李力,男),(李力,女),…M=m1×m2=3×2=65数据库技术与应用•笛卡尔积可用二维表的形式表示:姓名性别李力男李力女王平男王平女刘伟男刘伟女笛卡尔积实际是一个二维表元组同一域6数据库技术与应用3.关系(Relation)•笛卡尔积D1×D2×…×Dn的任一子集称为定义在域D1,D2,…,Dn上的n元关系(Relation)姓名性别李力男王平女刘伟男关系的名字n是关系的目或度•如,上例D1×D2笛卡尔积的某个子集可以构成教师关系T1D1×D2笛卡尔积的子集(关系T1)R(D1,D2…,Dn)7姓名性别李力男王平女刘伟男•在关系R中,当n=1时,称为单元关系。当n=2时,称为二元关系,以此类推。•关系中的每个元素是关系中的元组,通常用t表示,关系中元组个数是关系的基数。•由于关系是笛卡尔积的子集,因此,也可以把关系看成一个二维表。•具有相同关系框架的关系称为同类关系。属性的名字唯一属性域元组8网络与计算中心基础教研室第9/80页1.课程编号学分,学时域名={}m=?2.笛卡尔积课程名称*学分二维表;基数m=课程编号*学分*学时={。。。};基数m=3.笛卡尔集课程编号*课程名称*学分*学时的基数为?课程表是课程编号*课程名称*学分*学时的?课程表的基数为多少,度或者目为多少?2.1.2关系的性质•判断下列说法是否正确?每一列中的分量可以来自不同域每一列中的分量可以是不同类型的数据不同的列可以来自同一个域不同的属性必须有不同的名字列的顺序不能交换关系中元组的顺序(即行序)可任意交换关系中不允许出现相同的元组关系中每一分量必须是不可分的数据项10错错对对错对对对2.1.2关系的性质•关系是一种规范化了的二维表中行的集合每一列中的分量必须来自同一个域,必须是同一类型的数据。不同的列可来自同一个域,每一列称为属性,不同的属性必须有不同的名字。列的顺序可以任意交换。关系中元组的顺序(即行序)可任意交换。关系中不允许出现相同的元组。关系中每一分量必须是不可分的数据项。11数据库技术与应用姓名籍贯省市/县张强吉林长春王丽山西大同姓名省市/县张强吉林长春王丽山西大同非规范化的关系规范化的关系12数据库技术与应用2.1.3关系模式13网络与计算中心基础教研室第14/80页关系关系模型关系(Relation):一个关系对应一张二维表关系模式:对关系的描述关系名(属性1,属性2,…,属性n)学号姓名性别外语语种班级编号0308120301张彦男英语030812030308120302梁良男英语030812030308120303徐婧女英语0308120303081203014赵苹芳女英语03081203–学生(学号,姓名,性别,外语语种,班级编号号)数据库技术与应用2.1.3关系模式•关系的描述称为关系模式(RelationSchema)R(U,D,DOM,F)R--关系名U--属性名集合D--属性所来自的域DOM--属性向域的映像集合F--属性间数据的依赖关系集合•简记为:R(U)或R(A1,A2,…,An)15关系头静态、稳定,固定不变关系体随数据更新不断变化16关系模式关系关系学号姓名性别外语语种班级编号0308120301张彦男英语030812030308120302梁良男英语030812030308120303徐婧女英语0308120303081203014赵苹芳女英语03081203–学生(学号,姓名,性别,外语语种,班级编号号)数据库技术与应用与教师关系模式对应的实例17TNo教师号TN姓名Sex性别Age年龄Prof职称Sal工资Comm岗位津贴Dept系别T1李力男47教授15003000计算机T2王平女28讲师8001200信息T3刘伟男30讲师9001200计算机T4张雪女51教授16003000自动化T5张兰女39副教授13002000信息T(教师关系)数据库技术与应用2.1.4关系数据库与关系数据库模式18型静态、稳定,固定不变值随数据更新不断变化关系数据库模式关系数据库数据库技术与应用2.2关系的码与关系的完整性19网络与计算中心基础教研室第20/80页候选键关系中用来惟一标识一个元组的属性或属性组主键从候选键中指定一个用来标识元组关系模型学生关系学号姓名性别外语语种班级编号主键是我们在设计数据库时,根据情况选定的主键可以包含多个属性。主键网络与计算中心基础教研室第21/80页外键如果一个关系中的属性或属性组并非该关系的主键,但它是另一个关系的主键,则称其为该关系的外键关系模型学生关系学号姓名性别外语语种班级编号专业编号班级编号班长院系编号班级关系外键主键网络与计算中心基础教研室第22/80页从表主表关系模型学生关系学号姓名性别外语语种班级编号专业编号班级编号班长院系编号班级关系外键主键主表和从表主表:主键为从表外键从表:外键所在的表主表和从表通过外键相关联2.2关系的码与关系的完整性2.2.1候选键与主键•候选键(CandidateKey)能唯一标识关系中元组的一个属性或属性集,称为候选键(CandidateKey)唯一性,最小性例如:“学生关系”中的学号能唯一标识每一个学生“选课关系”中,只有属性的组合“学号+课程号”才能唯一地区分每一条选课记录23数据库技术与应用•主键(PrimaryKey)从多个候选键中选择一个作为查询、插入或删除元组的操作变量,被选用的候选键称为主键。也称为主码、主关键字、关键字、主关系键、关系键。以学号作为数据操作的依据以姓名作为数据操作的依据24学号姓名数据库技术与应用教学数据库中五个关系的主键•学生(学号,姓名,性别,年龄,系别)•教师(教师号,姓名,性别,年龄,职称,工资,岗位津贴,系别)•课程(课程号,课程名,课时)•选课(学号,课程号,成绩)•授课(教师号,课程号)25•主属性(PrimeAttribute)与非码属性(Non-PrimeAttribute)主属性:包含在主关系键中的各个属性称为主属性非码属性:不包含在任何候选键中的属性称为非码属性(或非主属性)全码:所有属性的组合是关系的候选键【例2-1】有教师授课关系TCS(教师T,课程C,学生S)教师T课程C1:nn:1学生S课程C1:nn:1教师T学生S课程Cn:nn:nn:n候选码为(T,C,S)全码26数据库技术与应用2.2.2外码关系R1关系R2属性X属性Y…主码主码参照关系被参照关系被参照关系的主码和参照关系的外码必须定义在同一个域上27属性X属性Z…外码数据库技术与应用外码示例Dept系别Addr地址计算机A楼信息B楼自动化C楼……主码SNo学号SN姓名Sex性别Age年龄Dept系别S1赵亦女17计算机S2钱尔男18信息……………S6吴丽女20自动化S(学生关系)D(系别关系)外码不是学生表S的主码,但是系别表D的主码28参照关系被参照关系数据库技术与应用2.2.3关系的完整性29数据库技术与应用学号姓名性别外语语种班级编号0308120301张彦男英语030812030308120302梁良男英语03081203徐婧女英语0308120303081203014赵苹芳女英语03081203上述学号是否可以为空?数据库技术与应用2.2.3关系的完整性31•完整性(Integrity)完整性是指数据库中数据在逻辑上的一致性、正确性、有效性和相容性。数据库完整性由各种各样的完整性约束来保证。3类关系完整性约束-实体完整性-参照完整性-用户自定义的完整性•实体完整性(EntityIntegrity)所谓实体完整性,就是一个关系模型中的所有元组都是唯一的,也就是一个二维表中没有两个完全相同行,也称为行完整性。实体完整性规则-若属性A是关系R的主属性,则属性A不能取空值。CNo课程号CN课程名CT学时C1程序设计60C2微机原理80数字逻辑60………SNo学号CNo课程号Score成绩S1C190S1C285S2C7………SC(选课关系)C(课程关系)32是否允许?是否允许?数据库技术与应用•参照完整性(Referentialintegrity)如果关系R2的外码X与关系R1的主码相符,则X的每个值或者等于R1中主码的某一个值,或者取空值。33SNo学号SN姓名Sex性别Age年龄Dept系别S1赵亦女17计算机S2钱尔男18信息……………S11王威男19经济S12李武男20S(学生关系)Dept系别Addr地址计算机A楼信息B楼自动化C楼D(系别关系)是否允许?数据库技术与应用•用户定义完整性(User-definedIntegrity)针对某一具体关系数据库的约束条件。反映某一具体应用所涉及的数据必须满足的语义要求。例如:34成绩属性的取值范围在0-100之间教授的工资不低于6000性别只能是男或女数据库技术与应用2.3关系代数关系数据结构关系操作关系完整性约束查询更新插入删除修改关系模型35数据库技术与应用2.3.1关系代数的分类及其运算符•关系代数是一种抽象的查询语言•关系代数的运算对象与运算结果都是关系•关系代数运算符∪-∩×∏∞*÷,≥,≤=,≠∧∨┐集合运算符关系运算符比较运算符逻辑运算符36数据库技术与应用关系代数的运算按运算符的不同主要分为两类:•传统的集合运算:把关系看成元组的集合,以元组作为集合中元素来进行运算,其运算是从关系的“水平”方向即行的角度进行的。包括并、差、交和笛卡尔积等运算。•专门的关系运算:不仅涉及行运算,也涉及列运算,这种运算是为数据库的应用而引进的特殊运算。包括选取、投影、连接和除法等运算。37数据库技术与应用2.3.2传统的集合运算38数据库技术与应用•并(Union):R∪S={t|t∈R∨t∈S}•差(Difference):R-S={t|t∈R∧┐t∈S}•交(Intersection):R∩S={t|t∈R∧t∈S}•广义笛卡尔积(ExtendedCartesianProduct):R×S={tr⌒ts|tr∈R∧ts∈S}39数据库技术与应用集合运算举例40设A={(湖南,长沙),(河北,石家庄),(陕西,西安)},B={(湖北,武汉),(广东,广州),(广东,深圳),(陕西,西安)},求A∪B、A∩B、A-B。显然,A、B是表示城市和所在省的关系。A∪B={(湖南,长沙),(河北,石家庄),(陕西,西安),(湖北,武汉),(广东,广州),