数据库第八章

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

数据库系统原理1陈岭浙江大学计算机学院关系模型2实体集联系集设计问题映射约束键数据库设计和E-R模型E-R图扩展的E-R特性E-R模式设计E-R模式到表的转换实体集3数据库可被建模为:实体集合实体间联系实体是客观存在的对象并且与其他对象可区分例如:特定的人,公司,事件,植物实体具有属性例如:人具有姓名和地址实体集是相同类型的实体的集合,他们具有相同的性质例如:所有人的集合,所有公司的集合实体集4例,实体集instructor属性名称属性值一个实体instructor实体集5实体用一个属性集合来表示,即实体集中所有成员都具有的描述性特性域:属性允许取值的集合属性种类:简单属性与复合属性单值属性与多值属性―例,多值属性:phone-numbers派生属性―可由其他属性计算得到―例,给定出生日期可计算出年龄―基属性或存储属性实体集6复合属性分量属性复合属性联系集7联系是指多个实体之间的相互关联studententityinstructorentityrelationship(98988,76766)advisor1(12345,45565)advisor2联系集是相同类型联系的集合一个联系集包含多个同类联系(或联系实例,relationshipinstance)一个联系集表示二个或多个实体集之间的关联联系集8正规地说,联系集是n2个实体集上的数学关系,每个实体取自一实体集{(e1,e2,…en)|e1E1,e2E2,…,enEn}其中(e1,e2,…,en)是一个联系,Ei为实体集例,(98988,76766)advisor,其中,98988student,76766instructor联系集9联系集advisoradvisor(s_ID,i_ID)联系集10联系集也可具有属性例如,实体集instructor和student之间的advisor联系集可具有属性dateadvisor(s_ID,i_ID,date)联系集的度11参加联系的实体集的个数涉及两个实体集的联系集称为二元的(二元联系)联系集可以涉及多于两个的实体集例,假设一个student在每个项目上最多只能有一位导师,如下图,包含三个实体集instructor、student和project(三元联系)多于两个实体集之间的联系较少见,数据库系统中的联系集一般多为二元的映射基数12表达可与一个实体通过联系集进行关联的其他实体的个数描述二元联系集最有用二元联系集的映射基数有以下几种情况:一对一,如:就任总统(总统,国家)一对多,如:分班情况(班级,学生)多对一,如:就医(病人,医生)多对多,如:选课(学生,课程)映射基数13一对一一对多注意:A和B中的某些元素可能未被映射到另一集合中的任何元素映射基数14多对一多对多注意:A和B中的某些元素可能未被映射到另一集合中的任何元素键、码15实体集的超码是能够唯一标识每个实体的一个或多个属性候选码是实体集的最小超码候选码可能存在多个,我们只会选择一个候选码作为主码或主键例,instructor(ID,name,dept_name,salary)候选码:ID超码:{ID},{ID,name},{ID,…}键、码16参与一个联系集的各实体集的码的组合,构成该联系集的超码(s_ID,i_ID)是advisor的超码注意:这意味着一对实体在一个联系集上最多有一个联系联系集的候选码依赖于联系集的映射基数(1:1,1:n,m:n)在选择主键时,如果有多个候选码,需要考虑关系集合的语义例,作为码的属性不能为空,值不应常变E-R图17分成两部分的矩形代表实体集。有阴影的第一部分包含实体集的名字,第二部分包含实体集中所有属性的名字菱形代表联系集未分割的矩形代表联系集的属性。构成主码的属性以下划线标明线段将实体集连接到联系集E-R图18虚线将联系集属性连接到联系集双线显示实体在联系集中的参与度双菱形代表连接到弱实体集的标志性联系集E-R图19包含复合、多值和派生属性的E-R图派生属性多值属性复合属性E-R图20带有属性的联系集联系集的描述性属性角色21参加联系的实体集不必是互不相同的例,自环联系集(recursiverelationshipset)角色:实体在联系集中的作用例,下图给出了course实体集和preq联系集之间的角色标识course_id和prereq_id角色标记是可选的,用于明确联系的语义角色标识基数约束22在联系集与实体集之间用有向直线()表示“一”,无向直线(—)表示“多”一对一联系:实体集instructor和student之间的联系集可以是一对一,表示一名教师可以指导至多一名学生,并且一名学生可以有至多一位导师注:一个联系集的类型取决于被表达对象的语义约束及设计者的意图基数约束23一对多联系:实体集instructor和student之间的联系集可以是一对多,表示一名教师可以指导多名学生,但一名学生可以有至多一位导师一多基数约束24多对一联系:实体集instructor和student之间的联系集可以是多对一,表示一名教师可以指导至多一名学生,但一名学生可以有多位导师基数约束25多对多联系:实体集instructor和student之间的联系集可以是多对多,表示一名教师可以指导多名学生,并且一名学生可以有多位导师参与约束26实体集参加联系集的方式全参与(用双线表示):实体集中的每个实体都至少参加联系集中的一个联系部分参与:某些实体可能未参加联系集中的任何联系映射基数约束(Mappingcardinalityconstraints),限定了一个实体与发生关联的另一端实体可能关联的数目上限全参与和部分参与约束,则反映了一个实体参与关联的数目下限:0次,还是至少1次关系约束的另一种表示法27用关系约束的另一种表示法来标识基数约束和参与约束例,每个学生有且仅有一个导师,教师可以有零个或多个学生1:1至少至多一个具有三元联系的E-R图28例,一个教师可以指导多个学生,并可以参与到多个项目二元与非二元联系29某些看起来似乎是非二元的联系可用二元联系更好地表示例,三元联系parents将孩子与其父亲和母亲相关联,可以更好地用两个二元联系father和mother代替使用二元联系可以表达部分信息(如,只知道母亲)但有些联系用非二元更自然例,proj_guide(instructor,project,student)parents(he,she,child)=father(he,child)mother(she,child)非二元联系转换成二元联系30任何非二元联系都可以用二元联系表示,方法是人为创建一个实体集将实体集A,B,C之间的联系R用实体集E和以下三个联系集代替:―RA,将E与A关联―RB,将E与B关联―RC,将E与C关联为E创建一个特殊的标识属性将R的所有属性加给E对R中每一个联系(ai,bi,ci)―创建实体集E中的一个新实体ei―将(ei,ai)加入RA―将(ei,bi)加入RB―将(ei,ci)加入RC非二元联系转换成二元联系31例,将如下非二元联系schooling转换成二元联系studentteachercoursec-roomschoolingstudentcourseenrollteachingplacec-roomteacher弱实体集32不具有主键的实体集称为弱实体集例,考虑一个section实体,它由课程编号、学期、学年以及开课编号唯一标识。显然,开课实体和课程实体相关联。假定我们在实体集section和course之间创建了一个联系集sec_course。若,实体集section为:section(sec_id,semester,year),则其为弱实体集弱实体集33弱实体集的存在依赖于它的标识实体集(或属主实体集)的存在例,course(course_id,title,credits)标识性联系:将弱实体集与其标识实体集相联的联系标识性联系是从弱实体集到标识实体集多对一的,并且弱实体集在联系中的参与是全部的例,sec_course弱实体集34弱实体集的分辨符(或称部分码)是指在一个弱实体集内区分所有实体的属性集合例,弱实体集section的分辨符由属性sec_id,year以及semester组成弱实体集的主码由它所依赖的强实体集的主码加上它的分辨符组成section的主码:{course_id,sec_id,semester,year}弱实体集标识性联系标识实体集分辨符弱实体集35注意:强实体集的主码并不显式地存于弱实体集中,而是隐含地通过标识性联系起作用如果course_id显式存在,section就成了强实体,则section与course之间的联系变得冗余。因为section与course共有的属性course_id已定义了一个隐含的联系扩展的E-R特性36特化自顶向下设计过程中,确定实体集中的一个具有特殊性质的子集这些子集称为低层实体集,它们具有特殊的属性或者参加特殊的联系属性继承:低层实体集继承它连接的高层实体集的所有属性及参加的联系扩展的E-R特性37特化用从特化实体指向另一方实体的空心箭头来表示。这种关系为ISA关系,代表“isa”(“是一个”)。例如,一个教师“是一个”雇员扩展的E-R特性38概化自底向上设计过程中,将若干共享相同特性的实体集组合成一个高层实体集特化与泛化简单互逆:它们在E-R图中以相同方式表示对特化/概化的设计约束39关于哪些实体可以是给定低层实体集的成员的约束条件定义的―只有满足student_type=“研究生”的实体才允许属于graduate_student实体用户定义的―大学雇员属于不同的工作组ISAgraduate_studentundergraduate_studentstudentDisjISAstudentemployeeperson对特化/概化的设计约束40关于实体在单个概化中是否可以属于多于一个低层实体集的约束不相交―一个实体只能属于一个低层实体集―在E-R图中ISA三角形旁边加注disjoint重叠―一个实体可以属于多个低层实体集ISAgraduate_studentundergraduate_studentstudentDisjISAstudentemployeeperson对特化/概化的设计约束41完备性约束:说明高层实体集中的实体是否必须至少属于一个低层实体集全部概化或特化:每个高层实体必须属于一个低层实体集部分概化或特化:允许一些高层实体不属于任何低层实体集(默认的)扩展的E-R特性42聚集考虑三元联系proj_guide现在假设每位在项目上指导学生的教师需要记录月评估报告聚集43联系集eval_for和proj_guide表达了重叠信息每个eval_for联系对应一个proj_guide联系然而,某些proj_guide联系可能不对应任何eval_for联系,因此我们不能丢掉proj_guide联系通过聚集消除这种冗余将联系视为一个抽象实体从而允许联系之间的联系联系抽象为新实体聚集44在没有引入冗余的情况下,下图表达了:一个学生在某个项目上由某个导师指导一个学生,导师,项目的组合可能有一相关的评估复合实体集E-R图表示法中使用的符号小结45E-R图表示法中使用的符号小结46其他可选择的E-R图表示法47其他可选择的E-R图表示法48设计数据库的E-R模式49需求分析需要什么样的数据、应用程序和业务概念数据库设计★使用E-R模型或类似的高层次数据模型,描述数据逻辑数据库设计将概念设计转换为某个DBMS所支持的数据模型关系标准化,检查冗余和相关的异常关系结构物理数据库设计索引,集群和数据库调优设计数据库的E-R

1 / 82
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功