1基于E-R模型的数据库概念设计方法2教学目的本章主要介绍实体-联系模型,使同学们学会运用E-R模型进行数据库的概念设计主要内容数据库设计过程,基本概念,映射基数,弱实体集,扩展ER特性,ER模型设计要点,概念数据库设计过程,E-R模型向关系模式的转换教学方法课堂讲授加课外案例设计重点E-R模型的各组成成分,数据库的概念设计,E-R模型向关系模式的转换难点运用E-R模型进行数据库的概念设计E-R模型34MYSQLWORKBENCH5某大学教学管理系统的概念模型设计(E-R模型)E-R模型设计实例6某大学教学管理系统某高校由于教师学生日益增加,传统的手工管理方式效率低下,决定开发一套教学管理信息系统。对学院、教师、学生、课程、考试等进行统一管理。需求调研-系统设计-系统开发-系统交付-软件设计-数据库设计7(1)该大学有多个学院:如软件学院、计算机学院、管理学院等,每一个学院有一个院长,且每一位院长只能主管一个学院(2)每一个学院设有多个系,如管理学院有会计系、市场营销系、管理信息系等(3)每一个系根据专业的特点和分工开设多门课程(4)每一个系有多名教师,但每一位教师只属于一个系(5)一位教师可能讲多门课,且课表中每一门课必须有一位教师讲授。这里的课指课表中安排的课程(6)系负责承接项目,一位教师可能参加或管理项目(7)教师按职称完成工作量业务规则8(8)假定每一名学生可选修多门课,且一门课有多名学生选(9)每一个系有多名学生,且一名学生只能属于一个系(10)学生可以组成班级,一个班级有一个班主任,一个系有若干个班级,一个学生可以参加多个学生组织(学生会),一个学生还有一个导师,导师可以指导多名学生(11)另外,学生的社会关系、档案材料、宿舍亦需要进行管理业务规则9E-R模型10数据库设计过程基本概念映射基数弱实体集扩展ER特性ER模型设计要点概念数据库设计过程E-R模型向关系模式的转换本章内容11数据库设计过程需求分析概念数据库设计逻辑数据库设计确定存储哪些数据,建立哪些应用,常用的操作及对象有哪些等对需求分析所得到数据的更高层的抽象描述将概念模型所描述的数据映射为某个特定的DBMS模式数据ER模型ODL物理数据库设计功能需求规格说明12避免冗余帐户、客户名、地址、电话贷款、客户名、地址、电话问题:帐户和贷款中的客户信息重复避免不完整帐户、客户名、地址、电话贷款、客户名、地址、电话问题:无法输入一个新客户选择好的设计数据库设计的范式问题数据库的设计原则13历史E-R模型:Entity-RelationshipModel1976年,P.P.S.Chen提出E-R模型,用E-R图来描述概念模型认识论基础世界是由一组称作实体的基本对象和这些对象之间的联系构成的作用有助于数据库设计对现实世界进行抽象与描述,强调语义表达能力基本概念14实体(Entity)客观存在并可相互区分的事物叫实体如学生张三、工人李四、计算机系、数据库概论属性(Attribute)实体所具有的某一特性称为实体的属性一个实体可以由若干个属性来刻画例如,学生可由学号、姓名、年龄、系等组成域(Domain)属性的取值范围,即值集。例如,性别的域为{男,女},月份的域为{1,2,3,…,12}基本概念15实体型(EntityType)实体名与其属性名集合共同构成实体型例:学生(学号,姓名,年龄,性别,系,年级)注意实体型与实体(值)之间的区别,后者是前者的一个实例如(9808100,王平,21,男,计算机系,2)是一个实体实体集(EntitySet)同型实体的集合称为实体集如全体学生基本概念16customer-idcustomer-namecustomer-streetcustomer-cityloanamount基本概念17联系(Relationship)多个实体之间的相互关联如学生与老师间的授课关系,学生与学生间有班长关系联系也可以有属性,如学生与课程之间有选课联系,每个选课联系都有一个成绩作为其属性同类联系的集合称为联系集联系的元或度(Degree)参与联系的实体集的个数称为联系的元如学生选修课程是二元联系,供应商向工程供应零件则是三元联系基本概念18基本概念联系集borrower19基本概念实体集customer与account之间的联系集depositor具有属性access-date20码(Key)能唯一标识实体的属性或属性组称作超码超码的任意超集也是超码其任意真子集都不能成为超码的最小超码称为候选码从所有候选码中选定一个用来区别同一实体集中的不同实体,称作主码一个实体集中任意两个实体在主码上的取值不能相同如学号是学生实体的码通讯录(姓名,邮编,地址,电话,Email,BP)基本概念21基本E-R图要点例:学生选修课程学生课程选修姓名学号系别课程名先修课学分成绩用矩形表示实体集,在框内写上实体名用椭圆表示实体的属性用无向边把实体与其属性连接起来用菱形表示实体间的联系将参与联系的实体用线段连接mn联系的数量22码在E-R图中的表示实体集属性中作为主码的一部分的属性用下划线来标明。基本E-R图要点学生课程选修姓名学号系别课程名先修课学分23基本E-R图要点24参与(Participation)实体集之间的关联称为参与,即实体参与联系如王军选修“数据库系统”,表示实体“王军”与“数据库系统”参与了联系“选修”如果实体集E中的每个实体都参与到联系集R中的至少一个联系,则称E全部参与R如果实体集E中只有部分实体参与到联系集R的联系中,则称E部分参与R基本概念25参与在E-R图中的表示customer部分参与联系borrowerLoan完全参与联系borrower用双线连接联系与完全参与的实体26存在依赖(ExistenceDependency)如果实体x的存在依赖于实体y的存在,则称x存在依赖于yy称作支配实体,x称作从属实体如果y被删除,则x也要被删除考虑分期付款的例子,对每一个“贷款”实体,有若干个“还款”实体与之关联,“还款”实体存在依赖于“贷款”实体存在依赖27全部参与与存在依赖设有ARB,若A存在依赖于B,则A全部参与联系R参照完整性一个实体集的属性是另一实体集的主码属性如:职工实体集中的部门号属性存在依赖28角色(Role)实体在联系中的作用称为实体的角色当同一个实体集不止一次参与一个联系集时,为区别各实体参与联系的方式,需要显式指明其角色如学生与学生间的班长关系,职工与职工之间的经理关系,课程之间的先修关系基本概念29表示要点当需要显式区分角色时,在连接菱形和矩形的线上加上说明性标注以区别不同的角色角色在E-R图中的表示30简单属性不可再分的属性如学号、年龄、性别复合(Composite)属性可以划分为更小的属性可以把相关属性聚集起来,使模型更清晰如电话号码=区号+本地号码出生日=年+月+日属性的类型31属性的类型32单值属性每一个特定的实体在该属性上的取值唯一如学生的学号,年龄、性别、系别等多值属性某个特定的实体在该属性上有多于一个的取值如学生(学号,所选课程,联系电话)学号与课程之间是一种多值依赖关系属性的类型33NULL属性null表示“无意义”或“不可用”,当实体在某个属性上没有值时设为null如通讯录(姓名,email,电话,BP),若某人没有email地址,则在email属性上取值为nullnull表示“值未知”,即值存在,但目前没有获得该信息如职工(姓名,部门,工种,身份证),如果目前不知道职工身份证号码,则设身份证值为null实体完整性作为主码的属性上取值不能为null属性的类型34派生(Derived)属性与基属性可以从其他相关的属性或实体派生出来的属性值如学生(学号,姓名,平均成绩),选课(学号,课程号,成绩),则平均成绩可由学生所选课程的总成绩除以课程总数来得到。称平均成绩为派生属性,而成绩为基属性,或存储属性数据库中,一般只存基属性值,而派生属性只存其定义或依赖关系,用到时再从基属性中计算出来基本表VS视图属性的类型35表示要点多值属性用双椭圆表示派生属性用虚椭圆表示属性在E-R图中的表示学生姓名选修课程学生姓名平均成绩系别36属性在E-R图中的表示37映射的基数(MappingCardinalities)实体之间的联系的数量,即一个实体通过一个联系集能与另一实体集相关联的实体的数目可以有一对一的(1:1),一对多的(1:m),多对多的(m:n)几种情况映射的基数38映射基数在E-R图中的表示多方实体集单方实体集联系R从A到B是一对一或多对一的ABR表示要点用箭头或线段来表示联系的映射基数联系R从A到B是多对多或一对多的ABR39二元联系集的映射基数设有两个实体集E1,E2,一对一E1中的一个实体与E2中至多一个实体相联系,并且E2中的一个实体与E1中至多一个实体相联系如“职工”与“部门”之间的“管理”联系(假定每个部门只有一个经理,一个职工不能兼任两个部门经理注:一对一不是一一对应映射的基数经理部门管理40一对多E1中的一个实体与E2中n(n≥0)个实体相联系,且E2中的一个实体与E1中至多一个实体相联系如“教师”和“学生”之间的“班主任”联系映射的基数教师学生班主任41多对多E1中的一个实体与E2中n(n≥0)个实体相联系,并且E2中的一个实体与E1中m(m≥0)一个实体相联系如“学生”和“课程”之间的“选修”联系映射的基数学生课程选修42一个实体集内的二元联系(角色不同)一对一∀ei∈E,至多存在一个ej∈E,与之相联系(j≠i)如“职工”之间的“配偶”联系一对多如“职工”内部的“领导”联系多对多如“零件”之间的“构成”联系映射的基数职工领导领导属下职工配偶丈夫妻子构成零件母零件子零件43多个实体集间联系的情况一对多设有n个实体集E1,E2,…,En,若对于E1,…,Ei-1,Ei+1,…,En,分别给定实体e1,…,ei-1,ei+1,…,en时,至多有一个实体ei∈Ei与之相联系,则称有一个从Ei到E1,…,Ei-1,Ei+1,…,En的一对多联系如“课程”,“教员”,“参考书”之间的“讲课”联系映射的基数教员参考书讲课课程44映射的基数映射的基数会影响到ER设计,例如customer与account之间是1:n联系,则可将access-date作为account的属性45映射的基数One-To-ManyOne-To-One46映射的基数Many-To-ManyMany-To-One47键ER图中的实体主键用下划线表示48联系集的键在联系集中可唯一确定一个联系的属性参与联系的实体集的主键的联合包含联系集的主键{Customer-id,loan-number}可唯一确定一个borrower关系.491-to-1联系集的键主键可为{customer-id}或者{loan-number}.501-m和m-m联系集的键主键是{loan_number}主键是{customer-id,loan_number}51弱实体集(WeakEntitySet)如果一个实体集的所有属性都不足以形成主码,则称这样的实体集为弱实体集贷款(贷款号,金额),支付(支付号,支付日期,金额),每个“贷款”的各个“支付”不同,但各个“贷款”的“支付”有可能是相同的。因此“支付”是一个弱实体集又如:“实验小组”存在依赖于“班级”弱实体集52分辨符(Discriminator)弱实体集中用于区别依赖于某个特定强实体集的属性集合。也称作部分码(partialkey)如“支付”中的支付号,Logins中的用户名弱实体集的主码由该弱实体集所存在依赖的强实体集的主码和该弱实体集的分辨符组成如“支付”主码=贷款号+支付号Logins主码=用