您好,欢迎访问三七文档
当前位置:首页 > IT计算机/网络 > 数据库 > 数据库系统概念02关系模型
2019年12月25日星期三2数据库系统概念----关系模型提纲2.1关系数据库的结构2.2关系代数基本运算2.3附加的关系代数运算2.4扩展的关系代数运算2.5空值2.6数据库的修改本章之后讲解–5.1:元组关系演算–Chapter3-4:sql2019年12月25日星期三3数据库系统概念----关系模型关系模型回顾E.F.Codd于70年代初提出关系数据理论,他因此获得1981年的ACM图灵奖关系理论是建立在集合代数理论基础上的,有着坚实的数学基础早期代表系统–SystemR:由IBM研制–INGRES:由加州Berkeley分校研制目前主流的商业数据库系统–Oracle,SQLServer,DB2…–Access,Foxpro,Foxbase2019年12月25日星期三4数据库系统概念----关系模型2.1.1关系数据结构单一的数据结构----关系–现实世界的实体以及实体间的各种联系均用关系来表示数据的逻辑结构----二维表–从用户角度,关系模型中数据的逻辑结构是一张二维表2019年12月25日星期三5数据库系统概念----关系模型2.1.1关系基本概念域(Domain)–一组值的集合,这组值具有相同的数据类型–如整数的集合、字符串的集合、全体学生的集合笛卡尔积(Car’tesianProduct)–一组域D1,D2,…,Dn的笛卡尔积为:D1×D2×…×Dn={(d1,d2,…,dn)|di∈Di,i=1,…,n}–笛卡尔积的每个元素(d1,d2,…,dn)称作一个n-元组(n-tuple)–元组的每一个值di叫做一个分量(component)–若Di的基数为mi,则笛卡尔积的基数为inim12019年12月25日星期三6数据库系统概念----关系模型2.1.1关系基本概念–例:设D1为教师集合(T)={t1,t2}D2为学生集合(S)={s1,s2,s3}D3为课程集合(C)={c1,c2}则D1×D2×D3是个三元组集合,元组个数为2×3×2,是所有可能的(教师,学生,课程)元组集合–笛卡尔积可表示为二维表的形式TSCt1s1c1t1s1c2t1s2c1………t2s3c22019年12月25日星期三7数据库系统概念----关系模型2.1.1关系基本概念关系–笛卡尔积D1×D2×…×Dn的子集叫做在域D1,D2,…,Dn上的关系,用R(D1,D2,…,Dn)表示–R是关系的名字,n是关系的度或目–关系是笛卡尔积中有意义的子集–关系也可以表示为二维表关系TEACH(T,S,C)TSCt1s1c1t1s1c2t1s2c1t2s3c2元组属性2019年12月25日星期三8数据库系统概念----关系模型2.1.1关系基本概念关系的性质–列是同质的即每一列中的分量来自同一域,是同一类型的数据如TEACH(T,S,C)={(t1,s1,c1),(t1,t2,c1)}是错误的–不同的列可来自同一域,每列必须有不同的属性名如P={t1,t2,s1,s2,s3},C={c1,c2},则TEACH不能写成TEACH(P,P,C),还应写成TEACH(T,S,C)2019年12月25日星期三9数据库系统概念----关系模型2.1.1关系基本概念–行列的顺序无关紧要遵循这一性质的数据库产品(如ORACLE),增加新属性时,永远是插至最后一列但也有许多数据库产品没有遵循这一性质,例如FoxPro仍然区分了属性顺序–任意两个元组不能完全相同(集合内不能有相同的两个元素)由笛卡尔积的性质决定,但许多关系数据库产品没有遵循这一性质–例如,Oracle,FoxPro等都允许关系表中存在两个完全相同的元组,除非用户特别定义了相应的约束条件2019年12月25日星期三11数据库系统概念----关系模型2.1.2数据库模式DBschema关系的模式和实例关系模式(型),关系(变量),实例(值)表述方式–关系模式:S(sno,sname,dept)–关系及关系模式:sc∈SC不同关系中属性名称相同,用以阐述不同关系的元组之间的联系ssccSnoSnameDeptSnoCnoScoreCnoCnameS1甲计S1C180C1DSS2乙软S1C290C2DBS3丙软S2C1702019年12月25日星期三12数据库系统概念----关系模型2.1.2数据库模式关系模式表现了型的概念,它代表着表的框架;关系表现为值的概念,成为关系实例一个关系模式下可以建立多个关系,例如在学生关系的关系模式下,可以为全校所有班级各建一个学生表表是动态的,是数据库中数据的快照关系数据库是关系的集合,其中每个关系都有自己的关系模式2019年12月25日星期三13数据库系统概念----关系模型2.1.2模式构造问题S同SC合并为一个表如何?–优点:表的数量少–缺点:数据冗余、被迫引入空值、插入异常、删除异常…模式构造的方法和原则SCSnoCnoScoreS1C180S1C290S2C170SSnoSnameS1甲S2乙S3丙S-SCSnoSnameCnoScoreS1甲C180S1甲C290S2乙C170S3丙2019年12月25日星期三14数据库系统概念----关系模型2.1.2模式构造问题–银行例子2019年12月25日星期三15数据库系统概念----关系模型2.1.2模式构造问题2019年12月25日星期三16数据库系统概念----关系模型其他可能的模式优点:表的数量少缺点:数据冗余、被迫引入空值、插入异常、删除异常…2019年12月25日星期三17数据库系统概念----关系模型2.1.3码超码(superkey)–是一个或多个属性的集合,这些属性的集合可以使我们在一个关系中唯一地标识一个元组候选码(CandidateKey)–关系中的一个属性组,其值能唯一标识一个元组。若从属性组中去掉任何一个属性,它就不具有这一性质了,这样的属性组称作候选码,如DEPT中的D#,DN都可作为候选码–任何一个候选码中的属性称作主属性,如SC中的S#,C#2019年12月25日星期三18数据库系统概念----关系模型2.1.3码主码(PrimaryKey)–进行数据库设计时,从一个关系的多个候选码中选定一个作为主码,如可选定D#作为DEPT的主码外部码(ForeignKey)–关系R中的一个属性组,它不是R的码,但它与另一个关系S的码相对应,则称这个属性组为R的外部码,如S关系中的D#属性–R是参照关系(ReferencingRelation)–S是被参照关系(ReferencedRelation)–R通过外码F参照关系S如何确定超码–按照现实世界语义约束定义码–不能依据对数据的归纳总结定义码2019年12月25日星期三19数据库系统概念----关系模型模式图schemadiagram模式图表示各关系模式属性主码关系引用2019年12月25日星期三20数据库系统概念----关系模型我们常用的例子数据结构–单一的数据结构——关系–实体集、联系都表示成关系DEPT(D#,DN,DEAN)S(S#,SN,SEX,AGE,D#)C(C#,CN,PC#,CREDIT)SC(S#,C#,SCORE)PROF(P#,PN,D#,SAL)学生选修属于系教师工作管理课程先修2019年12月25日星期三21数据库系统概念----关系模型关系模型DEANDND#DEPTD#AGESEXSNS#SPC#CREDITCNC#CD#SALPNP#PROFSCOREC#S#SC2019年12月25日星期三22数据库系统概念----关系模型例子S#SNAGESDS#C#G9801张三20D19801C1629805李四21D29801C2739805C380SSC2019年12月25日星期三23数据库系统概念----关系模型关系模式的完整性实体完整性–关系的主码中的属性值不能为空值–空值:不知道或无意义–意义:关系对应到现实世界中的实体集,元组对应到实体,实体是相互可区分的,通过主码来唯一标识,若主码为空,则出现不可标识的实体,这是不容许的2019年12月25日星期三24数据库系统概念----关系模型关系模式的完整性关系模型必须遵守实体完整性规则的原因–实体完整性规则是针对基本关系而言的。一个基本表通常对应现实世界的一个实体集或多对多联系–现实世界中的实体和实体间的联系都是可区分的,即它们具有某种唯一性标识–相应地,关系模型中以主码作为唯一性标识–主码中的属性即主属性不能取空值空值就是“不知道”或“无意义”的值主属性取空值,就说明存在某个不可标识的实体,即存在不可区分的实体,这与实体的可区分性相矛盾,因此这个规则称为实体完整性2019年12月25日星期三25数据库系统概念----关系模型关系模式的完整性注意–实体完整性规则规定基本关系的所有主属性都不能取空值–例选修(学号,课程号,成绩)“学号、课程号”为主码,则两个属性都不能取空值。2019年12月25日星期三26数据库系统概念----关系模型关系模式的完整性参照完整性(ReferentialIntegrity)在关系模型中实体及实体间的联系都是用关系来描述的,因此可能存在着关系与关系间的引用–例1学生实体、专业实体以及专业与学生间的一对多联系学生(学号,姓名,性别,院系编号,年龄)专业(院系编号,专业名)2019年12月25日星期三27数据库系统概念----关系模型关系模式的完整性–参照完整性如果关系R2的外部码Fk与关系R1的主码Pk相对应,则R2中的每一个元组的Fk值或者等于R1中某个元组的Pk值,或者为空值意义:如果关系R2的某个元组t2参照了关系R1的某个元组t1,则t1必须存在例如关系S在D#上的取值有两种可能–空值,表示该学生尚未分到任何系中–若非空值,则必须是DEPT关系中某个元组的D#值,表示该学生不可能分到一个不存在的系中2019年12月25日星期三28数据库系统概念----关系模型关系模式的完整性学号姓名性别专业号年龄801张三女0119802李四男0120803王五男0120804赵六女0220805钱七男0219专业号专业名01信息02数学03计算机2019年12月25日星期三29数据库系统概念----关系模型关系模式的完整性学生、课程、学生与课程之间的多对多联系学生(学号,姓名,性别,专业号,年龄)课程(课程号,课程名,学分)选修(学号,课程号,成绩)2019年12月25日星期三30数据库系统概念----关系模型关系模式的完整性学生实体及其内部的领导联系(一对多)学号姓名性别专业号年龄班长801张三女0119802802李四男0120803王五男0120802804赵六女0220805805钱七男02192019年12月25日星期三31数据库系统概念----关系模型关系模式的完整性–用户定义的完整性用户针对具体的应用环境定义的完整性约束条件如S#要求是8位整数,SEX要求取值为“男”或“女”–系统支持实体完整性和参照完整性由系统自动支持系统应提供定义和检验用户定义的完整性的机制2019年12月25日星期三32数据库系统概念----关系模型关系模式的完整性课程(课程号,课程名,学分)–“课程名”属性必须取唯一值–非主属性“课程名”也不能取空值–“学分”属性只能取值{1,2,3,4}2019年12月25日星期三33数据库系统概念----关系模型关系模式的完整性供应商号供应商名所在城市B01红星北京S10宇宙上海T20黎明天津Z01立新重庆零件号颜色供应商号010红B01312白S10201蓝T20今要向关系P中插入新行,新行的值分别列出如下。哪些行能够插入?A.(‘037’,‘绿’,null)B.(null,‘黄’,‘T20’)C.(‘201’,‘红’,‘T20’)D.(‘105’,‘蓝’,‘B01’)E.(‘101’,‘黄’,‘T11’)零件关系P(主码是“零件号”,外码是“供应商号”)供应商关系S(主码是“供应商号”)
本文标题:数据库系统概念02关系模型
链接地址:https://www.777doc.com/doc-2333154 .html