项目二数据模型的规划与设计项目知识要点单词学习1.Entity:实体2.Characteristic:特征3.Attribute:属性4.Relationship:联系5.PrimaryKey:主键6.ForeignKey:外键7.Domain:域8.Tuple:元组9.Relation:关系10.NormalForm:范式本项目目标了解设计数据库的步骤掌握如何绘制数据库的E-R图理解数据库的规范化-三大范式概念模型的基本元素实体(Entity)实体的特征(EntityCharacteristic)实体集(EntitySet)联系(Relationship)属性(Attribute)主码(PrimaryKey)和候选码(CandidateKey)域(Domain)为什么需要设计数据库修建茅屋需要设计吗?修建大厦需要设计吗?结论:当数据库比较复杂时我们需要设计数据库数据库设计就是将数据库中的数据对象以及这些数据对象之间关系进行规划和结构化的过程为什么需要设计数据库良好的数据库设计节省数据的存储空间能够保证数据的完整性方便进行数据库应用系统的开发糟糕的数据库设计:数据冗余、存储空间浪费内存空间浪费数据更新和插入的异常软件项目开发周期需求分析阶段:分析客户的业务和数据处理需求;概要设计阶段:设计数据库的E-R模型图,确认需求信息的正确和完整;详细设计阶段:将E-R图转换为多张表,进行逻辑设计,并应用数据库设计的三大范式进行审核;代码编写阶段:选择具体数据库进行物理实现,并编写代码实现前端应用;软件测试阶段:……安装部署:……现实世界建模信息世界模型转换规范化数据库世界数据库数据库设计数据库的步骤收集信息:与该系统有关人员进行交流、坐谈,充分理解数据库需要完成的任务标识对象(实体-Entity)标识数据库要管理的关键对象或实体标识每个实体的属性(Attribute)标识对象之间的关系(Relationship)E—R模型三个世界概念模型:把现实世界转换为信息世界的模型,E-R模型实施模型:把信息世界转化为数据世界使用的模型,关系模型事物类事物性质实体集实体属性文件记录数据项现实世界信息世界数据世界E-R模型的组成要素及表示方法1.E-R图的组成要素及其画法实体名联系名属性名实体表示属性表示联系表示图书图书名价格库存量图书ID绘制E-R图映射基数一对一XXXXYYYYXXXXYYYY一对多XXXXYYY多对一XXXXYYYY多对多客户订单产品MN1NE-R模型的组成要素及表示方法2.实体间不同联系情况的E-R图表示法联系分为:一对一(1:1)、一对多(1:n)、多对多(m:n)例:两个实体集之间的一对一的联系的绘制方法。假设某学院有若干个系,每个系只有一个主任。则主任和系之间是一对一的关系。主任和系的属性分别如下:主任——编号,姓名,年龄,学历;系——系编号,系名主任和系之间是一个管理关系解:描述主任和系之间的E-R图可如下图:1主任系管理1姓名年龄学历编号系编号系名任职时间例:两个实体集之间的一对多的联系的绘制方法。假设在某仓库管理系统中,有两个实体集:仓库和商品。仓库用来存放商品,且规定一类商品只能存放在一个仓库中,一个仓库可以存放多件商品。仓库和商品之间是一对多的联系。仓库和商品的属性分别如下:仓库——仓库号,地点,面积联单商品——商品号,商品名,价格在存放联系中要反映出存放商品的数量。解:描述仓库和商品之间的E-R图可如下图所示1仓库商品存放n地点面积仓库号商品号价格数量商品名两个实体集之间的多对多的联系的绘制方法。假设在某教务管理系统中,一个教师可以上多门课,一门课也可以由多个老师去上。教师和课程之间是多对多的联系。教师和课程可用以下属性来描述:教师——教师号,教师名,职称课程——课程号,课程名,班级在“讲授”联系中应能反映出教师的授课质量。解:描述教师和课程之间的E-R图可如下图所示。m教师课程讲授n教师名职称教师号课程号班级质量课程名E—R图的设计方法E-R图通常都应经过以下两个阶段:(1)针对每一用户画出该用户信息的局部E—R图,确定该用户视图的实体、属性和联系。需注意的是:能作为属性的就不要作为实体,这有利于E—R图的简化。(2)综合局部E—R图,生成总体E—R图。在综合过程中,同名实体只能出现一次,还要去掉不必要的联系,以便消除冗余。一般来说,从总体E—R图必须能导出原来的所有局部视图,包括实体、属性和联系。例:某田径运动会组委会需要一套运动会管理系统,现提出如下需求:(1)运动队方面运动队:队编号、队名、教练姓名运动员:编号、姓名、性别、项目其中,一个运动队有多个队员,一个队员仅属于一个运动队,一个队一般有一个教练,一个队员可参加多个项目(2)运动会方面运动队:队编号、队名、教练姓名项目:项目编号,项目名、参加运动队编号、场地其中,一个项目可由多个队参加,一个运动队可参加多个项目,一个项目一个比赛场地。现要求分别设计运动队方面和运动会方面的两个局部E-R图。局部E-R图运动会局部E-R图运动队教练姓名队名运动员性别运动员编号姓名项目属于m1运动队局部E-R图运动队教练姓名队编号队名项目场地项目编号项目名称参加mn运动会局部E-R图全局E-R图运动队教练姓名队编号队名运动员性别姓名项目属于项目场地项目编号项目名称参加运动员编号1mmn合并的全局E-R图合并后的全局E-R图存在如下冲突:(1)命名冲突:“项目”、“项目名称”异名同义,统一命名为“项目名”;(2)结构冲突:“项目”在两个局部E-R图中,一个做属性,一个作实体,删除作为属性的项目,保留作为实体的项目;运动队在两个局部图里的属性结构不一致,需要进行统一。运动队教练姓名队编号队名运动员性别姓名属于项目场地项目编号项目名参加运动员编号1mmn修改后的结果关系模型的基本术语关系(Relation)元组(Tuple)属性(Attribute)、主属性(PrimeAttribute)和非主属性(Non-KeyAttribute)主键(PrimaryKey)外键(ForeignKey,FK)关系模式(RelationMode)关系(Relation)一个关系对应通常说的一张表。元组(Tuple)表中的一行即为一个元组。属性(Attribute)表中的一列即为一个属性,给每一个属性起一个名称,即属性名。主码(Key)(主键)表中的某个属性组,它可以唯一确定一个元组。域(Domain)属性的取值范围。分量元组中的一个属性值。关系模式对关系的描述关系名(属性1,属性2,…,属性n)例如:学生(学号,姓名,年龄,性别,系,年级)学号姓名性别出生时间专业总学分备注081101王林男1990-02-10计算机50081103王燕女1989-10-06计算机50081108林一帆男1989-08-05计算机52已提前修完一门课081202王林男1989-01-29通信工程40有一门课不及格,待补考081204马琳琳女1989-02-10通信工程42E—R模型到关系模型的转换把E-R图转换为关系模型可遵循如下原则:(1)对于E—R图中每个实体集,都应转换为一个关系,该关系应包括对应实体的全部属性,并应根据关系所表达的语义确定哪个属性或哪几个属性组作为“主关键字”,主关键字用来标识实体。(2)对于E—R图中的联系,情况比较复杂,要根据实体联系方式的不同,采取不同的手段加以实现。下面着重讨论联系的转换方法。两实体集间1:n联系两实体集间1:n联系,可将“一方”实体的主关键字纳入“n方”实体集对应的关系中作为“外部关键字”,同时把联系的属性也一并纳入“n方”对应的关系中。BJB(班级编号,院系,专业,人数)XSB(学号,姓名,性别,出生时间,专业,总学分,备注)SYB(学号,班级编号)BJB(班级编号,院系,专业,人数)XSB(学号,姓名,性别,出生时间,专业,总学分,备注,班级编号)两实体集间m:n联系对于两实体集间m:n联系,必须对“联系”单独建立一个关系,用来联系双方实体集。该关系的属性中至少要包括被它所联系的双方实体集的“主关键字”,并且如果联系有属性,也要归入这个关系中。XSB(学号,姓名,性别,出生时间,专业,总学分,备注)KCB(课程号,课程名称,开课学期,学时,学分)CJB(学号,课程号,成绩)假设A实体集与B实体集是1:1的联系,联系的转换有三种方法:①把A实体集的主关键字加入到B实体集对应的关系中,如果联系有属性也一并加入;②把B实体集的主关键字加入到A实体集对应的关系中,如果联系有属性也一并加入;③建立第三个关系,关系中包含两个实体集的主关键字,如果联系有属性也一并加入。BJB(班级编号,院系,专业,人数)BZB(学号,姓名)SYB(学号,班级编号)BJB(班级编号,院系,专业,人数)BZB(学号,姓名,班级编号)或者BJB(班级编号,院系,专业,人数,学号)BZB(学号,姓名)数据依赖对关系模式的影响我们的任务是研究模式设计,研究设计一个“好”的(没有“毛病”的)关系模式的办法。这里通过一个例子来说明一个“不好”的模式会有些什么毛病,分析他们产生的原因,从中找出设计一个“好”的关系模式的办法。[例1]建立一个描述学校教务的数据库:学生的学号(Sno)、所在系(Sdept)系主任姓名(Mname)、课程名(Cname)成绩(Grade)单一的关系模式:StudentU、FU={Sno,Sdept,Mname,Cname,Grade}数据依赖对关系模式的影响(续)属性组U上的一组函数依赖F:F={Sno→Sdept,Sdept→Mname,(Sno,Cname)→Grade}SnoCnameSdeptMnameGrade关系模式StudentU,F中存在的问题1.数据冗余太大2.更新异常(UpdateAnomalies)3.插入异常(InsertionAnomalies)4.删除异常(DeletionAnomalies)SnoCnameSdeptMnameGrade数据依赖对关系模式的影响(续)结论:Student关系模式不是一个好的模式。“好”的模式:不会发生插入异常、删除异常、更新异常,数据冗余应尽可能少原因:由存在于模式中的某些数据依赖引起的解决方法:通过分解关系模式来消除其中不合适的数据依赖数据规范化仅有好的RDBMS并不足以避免数据冗余,必须在数据库的设计中创建好的表结构DrE.F.codd最初定义了规范化的三个级别,范式是具有最小冗余的表结构。这些范式是:第一范式(1stNF-FirstNormalFromate)第二范式(2ndNF-SecondNormalFromate)第三范式(3rdNF-ThirdNormalFromate)第一范式(1stNF)第一范式的目标是确保每列的原子性如果每列都是不可再分的最小数据单元(也称为最小的原子单元),则满足第一范式(1NF)BuyerIDCountryCity1142中国中国日本美国北京北京东京纽约………BuyerIDAddress1234中国北京市美国纽约市英国利物浦日本东京市……2NF1NF的定义如果一个关系模式R的所有属性都是不可分的基本数据项,则R∈1NF第一范式是对关系模式的最起码的要求。不满足第一范式的数据库模式不能称为关系数据库但是满足第一范式的关系模式并不一定是一个好的关系模式2NF(续)[例4]关系模式S-L-C(Sno,Sdept,Sloc,Cno,Grade)Sloc为学生住处,假设每个系的学生住在同一个地方函数依赖包括:(Sno,Cno)FGradeSno→Sdept(Sno,Cno)PSdeptSno→Sloc(Sno,Cno)PSlocSdept→Sloc2NF(续)S-L-C的码为(Sno,Cno)S-L-C满足第一范式。非主属性Sdept和Sloc部分函数依赖于码(Sno,Cno)SnoCnoGradeSdeptSlocS-L-C