您好,欢迎访问三七文档
当前位置:首页 > IT计算机/网络 > 数据结构与算法 > 数据库系统基础教程(第3章)
1第3章关系数据模型第3章关系数据模型2本章介绍的内容⒈关系数据模型是什么?以二维表的形式排列数据的模型称之为关系数据模型。⒉如何将E/R模型转变为关系数据模型?⒊如何使关系模型满足一定规范形式(范式)?第3章关系数据模型33.1关系模型的基本概念第3章关系数据模型4关系模型的基本概念关系模型是以集合论中的关系来表示数据以及数据之间的联系的。关系relation是什么?由若干列和行组成的一个二维表,称为一个关系,即一个表table。表示数据结构和数据集合的一种简单方式。一个关系有一个名称。titleyearlengthfilmTypeStarWars1977124colorMightyDucks1991104colorWayne’sWorld199295color第3章关系数据模型5属性属性attribute是什么?一个关系中某一列的名称,描述一列数据的含义。如Movies中的length。一个属性有一个名称。一个关系中的多个属性不能重名。第3章关系数据模型6模式关系模式relationalschema是什么?一个关系的名称及其一组属性的集合,称为一个“关系模式”。表示为:关系名(属性1、属性2、…、属性n)例如:movies(title,year,length,filmtype)一个数据库包含一个或几个关系模式。一个关系数据库中所包含的关系模式的全体,称为一个“关系数据库模式”,或“数据库模式”。一个关系模式中的各属性排列有次序吗?没有。但为方便起见,一个关系通常设有一个“缺省次序”。第3章关系数据模型7元组一个元组tuple是什么?某个关系中除了属性标题之外的一行数据。一个关系中可能没有元组。一个元组(行)在每个属性(列)上有一个交叉,即一个分量(component)。如何表示一个元组?按照关系模式,用逗号分割每个分量。例如:(StarWars,1977,124,color)注意:不表示属性名称,按照关系模式的属性次序表示各分量。第3章关系数据模型8元组元组和对象之间有何对应关系?一个关系可粗略对应一个类。一个元组可粗略对应一个对象。一个元组的一个分量对应一个对象在某属性上的一个值。元组和对象之间有何区别?对象具有自身固有的标识(OID);无需人为定义键。一个关系中的元组在关系中不能出现多次;而类中的一组对象的属性值可以相同。第3章关系数据模型9域域domain是什么概念?一个域是一种基本数据类型,如integer,char(n),datetime等。一个关系中每个属性都属于某个域,即某种基本数据类型。关系模型要求每个元组的每个分量必须具有原子性。原子性atomic是什么含义?没有内部结构,不能再分解的基本数据类型。第3章关系数据模型10关系的等价表示法一个关系为什么有多种等价表示?改变关系中属性的排列次序,即改变列次序,不改变关系的含义。注意,各分量对应各列。改变关系中元组的排列次序,即改变行次序,不改变关系的含义。第3章关系数据模型11关系的实例一个关系的模式和元组之间有何关系?关系模式相对静态;而关系中的元组是动态变化的。元组的增、删、改必须按关系模式进行。关系的实例是什么?一个关系的一组元组即为该关系的一个实例。关系的实例随时间变化,“当前实例”指的是在当前时刻,某关系中的元组。第3章关系数据模型123.2从E/R图到关系设计第3章关系数据模型13实体集到关系的转换建立与实体集相同名称的关系,且具有与实体集相同属性集。Stars-inMoviesStarsStudiostitlelengthyearfilmTypenameaddressnameaddressOwns第3章关系数据模型14实体集到关系的转换Movies(title,year,length,filmtype)Stars(name,address)Studio(name,address)nameaddressCarrieFisher123MapleSt.,HollywoodMarkHamill456DakRd.,BrentwoodHarrisonFord789PalmDr.,BeverlyHills第3章关系数据模型15E/R图二元联系到关系的转换根据二元联系的多重性分别处理:1.E1到E2的多对多联系R:R表示为一个关系,其属性是E1和E2的键属性,加上自身属性。例如:Movies和Stars之间的StarsIn(title,year,starName)例如:学生与课程间的选修关系:选修(学号,课号,成绩)第3章关系数据模型16E/R图二元联系到关系的转换2.E1到E2的多对1联系R:R可表示为一个关系,但不是必须表示为关系。例如:Movies到Studios之间的Owns(title,year,studioName)在E1关系中增加E2的键属性,E2作为被参照关系。例如:Movies(title,year,length,filmType,studioName)例如:系与职工间的从属关系。职工(职工号,姓名,…,系号)第3章关系数据模型17E/R图二元联系到关系的转换3.E1到E2的1对1联系R:R可表示为一个关系,但通常不表示为关系。而采用两种方法:在E1关系中增加E2关系的键,E2作为被参照关系。在E2关系中增加E1关系的键,E1作为被参照关系。1对1联系可能被合并为一个关系。例如:系与职工间的领导关系。可表示为:系(系号,系名,系主任职工号)或:职工(职工号,姓名,…,系号,领导系号)第3章关系数据模型18E/R图中的多元联系转换为关系先将多元联系转换为二元联系,再按上述的方法转换为关系。第3章关系数据模型19处理弱实体集弱实体集E表示为一个关系,包含自身属性和F关系的键属性。关系R不再表示为一个关系。例如:职工与职工简历职工(职工号,姓名,性别,出生日期,…)职工简历(职工号,时间,单位,任职)例如:Contracts(starName,studioName,titlt,year,salary,date)FRE第3章关系数据模型203.3子类结构到关系的转换第3章关系数据模型21子类结构转换为关系的条件有一个根实体集。有一个可唯一确定层次中每个实体集的键。包含属于这个层次中某些子树的实体集的分量,只要这个子树包含根。第3章关系数据模型22子类结构转换为关系的策略遵照E/R观点。为任一个在层次中的实体集创建一个关系,它包含根的键属性和实体集自身属性。把实体集看作属于单个类的对象。为每个包含根的子树创建一个关系,这个关系模式包括子树中所有实体集的所有属性。使用空值(NULLvalue)。创建一个包含层次中所有实体集属性的关系。每个实体由一个元组表示,对于实体不具有的属性,则设该元组的相应分量为空。第3章关系数据模型23E/R方式转换为每个实体集建立关系。MoviesCartoonsisaMurder-MysteriesisaweaponVoicestoStarslengthtitleyearfilmType第3章关系数据模型24E/R方式转换Movies(title,year,length,filmtype)MurderMysteries(title,year,weapon)Cartoons(title,year)Voices(title,year,starName)第3章关系数据模型25面向对象的方法枚举层次中所有可能的子树。为每一个子树构造一个可以描述该子树中实体的关系。这个关系模式含有子树中所有实体集的所有属性。Movies(title,year,length,filmtype)MoviesC(title,year,length,filmtype)MoviesMM(title,year,length,filmtype,weapon)MoviesCMM(title,year,length,filmtype,weapon)第3章关系数据模型26使用空值组合关系允许空值(NULL)作为元组值,就可以对一个实体集层次只创建一个关系。这个关系包含了层次中所有实体集的所有属性。Movies(title,year,length,filmtype,weapon)第3章关系数据模型27各种方法比较⒈由于涉及几个关系的查询代价高昂,所以人们宁愿在一个关系中寻找查询需要的所有属性。⒉如果倾向于用尽量少的关系,可使用“空值”的方法,因它只有一个关系。⒊如果倾向于减少空间和避免重复的信息。“面向对象”的方法对每个实体集只使用一个元组,且这个元组只含有对实体有意义的属性的分量,所以这种方法占用的空间最少。第3章关系数据模型283.4函数依赖第3章关系数据模型29函数依赖的定义所谓函数依赖就是用形式化方法研究一个关系中各属性之间的语义关系。定义若关系R的任意两个元组在属性A1、A2、…、An上一致(即有相同分量值),则这两个元组在属性B上也一致,则称属性A1A2…An函数决定B,或称B函数依赖于A1A2…An。记为A1A2…An→B第3章关系数据模型30函数依赖的定义tuAB若t和u在A上一致,则在B上一致第3章关系数据模型31例子例如:学号→姓名学号→性别考虑:姓名→性别?关系:学生(学号,姓名,性别)中为何学号→姓名成立?如果两个元组具有相同学号,则两个元组指同一个学生,故具有相同姓名和性别。在一个关系中,不存在(键值)完全相同的元组。如果不存在两个元组具有相同学号,即每个元组各表示一个学生,则学号→姓名成立。第3章关系数据模型32推论推论1:当且仅当A1A2…An→B1A1A2…An→B2…A1A2…An→Bm则A1A2…An→B1B2…Bm推论2:A→A第3章关系数据模型33举例关系Movies(title,year,length,filmType,studioName,starName)中,存在哪些函数依赖?titleyear→lengthfilmTypestudioName考虑:titleyear→starName?TitleYearLengthfilmTypestudioNamestarNameStarWarsStarWarsStarWarsMightyDucksWayne’sWorldWayne’sWorld…1977197719771991199219921241241241049595colorcolorcolorcolorcolorColorFoxFoxFoxDisneyParamountParamountCarrieFisherMarkHamillHarrisonFordEmilioEstevezDanaCarveyMikeMeyers思考题:分析学生(学号,课号,成绩,系号,宿舍区)中的函数依赖。第3章关系数据模型34怎样分析一个具体关系中的函数依赖根据属性之间的语义关系分析函数依赖。应考虑所有可能的属性组合。尽可能使函数依赖式的左面最小化,而右面最大化。注意:函数依赖是针对关系模式,而不是针对特定实例,故只从关系实例不能确切断定函数依赖。第3章关系数据模型35判断函数依赖的三种情形如果任意两元组在属性A上一致,在B上也一致,则有A→B成立。如果任意两元组在属性A上一致,在B上不一致,则A→B不成立。如果任意两元组在属性A上不可能一致,则不管在B上是否一致,有A→B成立。第3章关系数据模型36函数依赖的定义部分函数依赖:若X→Y,且存在X的真子集X’,X’→Y,则称Y对X部分函数依赖。完全函数依赖:若X→Y,且Y对X不是部分函数依赖,则称Y对X是完全函数依赖。传递函数依赖:若X→Y,Y→Z,且Y→X,则称Z对X是传递函数依赖。第3章关系数据模型37关系的键定义:对于关系R,若属性集合{A1,A2,…,An}满足下列条件,则该属性集合是R的一个键key:1.A1,A2,…,An函数决定R中所有其他属性。(超键)2.{A1,A2,…,An}的任何真子集都不能函数决定
本文标题:数据库系统基础教程(第3章)
链接地址:https://www.777doc.com/doc-4108774 .html