1、ER图和关系数据库设计ER图和关系数据库设计ER图和关系数据库设计2.1实体-联系模型(E-R图)书籍能培养我们的道德情操,给我们巨大的精神力量,鼓舞我们前进2.1实体-联系模型(E-R图)2.1.1基本概念实体联系模型(ER模型)为数据库建模提供了3个基本的语义概念:实体(Entity)、联系(Relationship)、属性(Attributes)。实体是指客观存在的、对于建立数据库有意义的、能够被清晰地辨识的事物或概念,实体用它的若干属性来描述的。【例】实体“学生”,具有属性“学号”、“姓名”、“性别”、“年龄”。基本概念所谓属性是指事物的某一方面的特征,属性可以是基本属性
2、或导出属性。例如,学生的学号是一个简单属性;学生的家庭地址是一个复合属性,它由简单属性“城市”、“街道”、“门牌号”等组成。属性可以是基本属性或导出属性。例如,一个人的生日是基本属性,年龄是导出属性,年龄可以根据生日和当前日期导出。属性值的取值范围称为值域(Domain),例如人的年龄值域为0250,图书馆的馆藏资料类型的值域为(书籍、杂志、会议录、内部资料)。基本概念ER模型中的联系是指实体类型之间的联系。例如,教师教学生,“教”就是实体类型“教师”和“学生”之间的联系。联系也可以有属性。例如,学生实体与课程实体之间的联系“选课”,可以有属性学号、课程号、成绩等。2.1.2ER图的
3、组成在ER图(E-RDiagram)中,基本的图形元素有3个:实体集合框,联系集合框和属性框。实体集合框用矩形框表示,实体之间的联系用菱形框表示,属性用椭圆形框(或圆形框)表示。ER图示例基数比约束基数比约束(CardinalityRatioConstraint)是对参与联系的实体的一种约束。一个联系的基数(Cardinality)是指,对应于该联系的另一方的实体集的单个实体,本实体集的实体的数量。ER模型支持的实体之间的一对一、一对多、多对多的联系。基数比约束示例参与约束参与约束是对实体参与度的约束。在一个给定的联系中的实体称为该联系的参与者。所谓实体参与度是指实体参与联系的
4、最小和最大的次数。参与的次数可以用一个整数偶对(min,max)来表示,其中min和max分别是实体参与联系的最小和最大的次数。ER图的联系类型(1)ER图中的联系类型有:递归联系、二元联系和多元联系。递归联系,即一个实体集合与其本身的联系。二元联系是指两个实体集合之间的联系。ER图的联系类型(2)多元联系是指三个以上实体集合之间的联系。如何建立ER模型在建立ER模型中,首先确定实体集合,然后确定联系集合,最后给出实体和联系的属性。下面的一些启发性规则可以帮助确定实体:对于汇集和维护企业组织的数据有重要意义的、确定的、可以标识的对象可以指定为实体;每个实质性的确定的对象,如人员、位置
6、性:航班号NUMBER:INT(3)出发地SOURCE:CHAR(3)目的地DEST:CHAR(3)开点DEP-TIME:INT(4)到点ARR-TIME:INT(4)为简化起见,假设是直达航班。本实体集可用NUMBER作关键字,也可用SOURCE与DEP-TIME组成关键字。民航航班管理数据模型实体集3航次DEPARTURES属性:日期DATE:INT(3)本实体集的每一个实体是在某日起飞的航次。实体集4机型PLANES属性:制造厂MANUFACTURER:CHAR(10)型号MODEL-NO:CHAR(10)这两个属性组成实体集的关键字。实
7、体集5飞机AIRCRAFT属性:序号SERIAL-NO:INT(5)民航航班管理数据模型实体集6职工PERSONNEL属性:职工号EMP-NO:INT(6)姓名NAME:CHAR(30)住址ADDRESS:CHAR(30)工资SALARY:INT(6)职工号EMP-NO是本实体集的关键字。实体集7飞行员PILOTS实体集PILOTS无属性。民航航班管理数据模型实体集之间的联系集定义如下:(1)ISA(PILOTS,PERSONNEL)用于指明具体的飞行员个人,它是一对一联系。(2)BOOKED-ON(PASSENGERS,DEPARTURES)表示订票
8、,它是多对多联系。(3)INSTANCE-OF(DEPARTURES,FLIGHTS)表示一次飞行航班,从DEPARTURES到FLIGHTS是多对一联系。民航航班管理数据模型(4)ASSIGNED-TO(PERSONNEL,DEPARTURES)表示每个航次的空中乘务员,它是多对多联系。(5)CAN-FLY(PILOTS,PLANES)表示能驾驶飞机的飞行员,是多对多联系。(6)TYPE(AIRCRAFT,PLANES)从AIRCRAFT到PLANES是多对一联系,表示每架飞机的机型。实体间的依赖如果一个实体集合的存在与否是依赖于另一个实体集合的,那么称这两个实体集合之间存在
9、依赖关系。【例】家属和职工、病房和医院前者称为依赖实体集合,又叫作弱实体集合可用双矩形框表示弱实体集合(或用带圆角的矩形框表示)。后者叫作主实体集合或强实体集合,用单个矩形框表示。主实体集合与它的弱实体集合之间的联系称为弱联系集合或依赖联系。在表示联系的菱形框内加上字符E,可表示弱联系集合(或用双菱形框表示)。用一个指向弱实体集合框的箭头表示依赖联系。【例】实体间的依赖2.2实体-联系模型转换为关系模型把一个E-R模型转化为关系模型,可遵守下列规则:转换规则1规则1:每一个实体集转换为一个关系。实体集中的实体的属性成为该关系的属性。实体的标识符成为该关系的关键字。每个实体由该关系的一个元
10、组表示。例如实体集product转换成关系PRODUCT(product-number,product-name,cost-price)。转换规则2规则2:每一个联系集转换成一个关系,该联系集自身所拥有的属性,加入到该关系中去,而该关系的主关键字由该联系集所联系的实体集的关键字组成。例如联系集Warehouse-product-order转换成关系WAREHOUSE-PRODUCT-ORDER(warehouse-no,product-no,order-no,quantity-order)转换规则3规则3:如果一个联系集的两侧标明的基数比是1N(一对多联系),且联系无自身
11、的属性,则在1侧的实体集的关键字应加入到另一侧的实体转换成的关系中,联系集本身可不必单独转换成关系。例如下图实体集CUSTOMER的关键字应加入到对应于实体集ORDER的关系中去。经过转换后可得关系模式为:CUSTOMER(cus-no,cus-name)ORDER(order-no,order-date,cus-no)其中,对于关系ORDER,属性cus-no是外来关键字。转换规则311的联系也可以类似处理。如果1n的n一方的实体是部分参与联系,为了避免在转换后的关系中的外来关键字出现空值(NULL),可以分别把实体集和联系集按照规则1、2转换成关系。【转换示例】【例】一
12、个简单的足球队数据模型。实体集选择如下:(1)球员PLAYERS属性:姓名NAME籍贯BPLACE生日BDATENAME为关键字。(2)位置POSITIONS属性:名称POSNAME人数POSNUMBERPOSNAME或POSNUMBER均可作关键字,一般用POSNAME。【转换示例】(3)球队TEAMS属性:球队名TEAM-NAME城市CITY年YEARTEAM-NAME和YEAR组成关键字。上述实体集之间的联系集有:(1)打球PLAYS(PLAYERS,POSITIONS)从PLAYERS到POSITIONS是多对多联系。(2)参赛SEAS
13、ON(PLAYERS,TEAMS)从PLAYERS到TEAM是多对一联系。它有一个属性BA,表示比赛场次。【转换示例】由上述实体集和联系集构成的ER图如图所示,它所转换成的关系模型具有如下5个关系:PLAYERS(NAME,BPLACE,BDATE)TEAMS(TEAM-NAME,CITY,YEAR)POSITIONS(POSNAME,POSNUMBER)PLAYS(NAME,POSNAME)SEASON(NAME,TEAM-NAME,YEAR,BA)2.3关系数据库设计理论基础概述关系数据库设计的核心是关系模式的设计,即按照一定的原则,从数量众多而又相互关联的数据
14、中,构造出一组既能较好地反映现实世界、又具有良好性能的关系模式。关系范例的描述SCT(S,C,CN,GRADE,TNAME,BDATE,SALARY).其中的属性依次代表学号、课程号、课程名、成绩、任课教师姓名、教师出生日期和工资。规定:每个学生选修每门课只有一个成绩;每门课只有唯一的课程号,并且由一个教师担任。【示例】问题SCT(学号,课程号,课程名,成绩,任课教师姓名,教师出生日期和工资)通过分析不难发现SCT存在如下问题。1数据冗余度问题(如教师姓名)2修改问题(如修改教师工资)3插入问题(如未开课的教师信息)4删除问题(如教师调离学校)【示例】改进如果把SCT分为如下三关
15、系模式:选课关系:SC(学号,课程号,成绩)课程关系:C(课程号,课程名,教师姓名)教师关系:T(教师姓名,教师出生日期,工资)则上述问题便都得到解决。函数依赖(1)设R(U)是属性集U上的一个关系模式,X和Y均为UA1,A2,An的子集,r为R的任一个关系。如果对于r中的任意两个元组u、v,只要有uXvX,就有uYvY,则称X函数决定Y或称Y函数依赖于X,记为XY。其中X称为决定因素(Determinant)。即对于关系模式R中的属性子集X的每一个值,任何时候都只有一个确定的Y值与之对应。函数依赖示意图但是S#和C#、S#和TNAME间不存在函数依赖关系。函数依赖(2)在R(U)中
16、,如果XY,并且对于X的任何真子集X都有XY,则称Y完全函数依赖于X,记作(简记为XY)。【例】C#CN如果XY,且X中存在一个真子集X,使得XY成立,则称Y部分函数依赖于X,记作。【例】(S#,C#)CN根据联系确定函数依赖关系如果X和Y之间的联系是1:1的,则存在函数依赖XY和YX。【如】C#和CN如果X和Y之间的联系是n:1的,则它们之间只存在函数依赖XY。【如】C#TNAME如果X和Y之间的联系是m:n的,则它们之间不存在函数依赖。【如】C#和S#关键字设R(U)为一关系模式,F为R的函数依赖集,X为属性集U的子集,如果满足:(1)XUF+;(2)不存
17、在YX,使得YUF+;则称X是R的关键字。分析条件(1)要求关键字能唯一地标识元组。条件(2)保证关键字是最小的集合,不存在多余的属性。关键字分类候选关键字:任何一个能函数决定全部属性的最小属性集。主关键字:在候选关键字中选定一个作为关键字,称为该关系的主关键字。关系中主关键字是唯一的。外部关键字:关系中某个属性或属性组合并非关键字,但却是另一个关系的主关键字,称此属性或属性组合为本关系的外部关键字。关系之间的联系是通过外部关键字实现的。主属性:包含在任一关键字中的属性。关系模式的规范化第一范式(1NF)第二范式(2NF)第三范式(3NF)BCNF1、第一范式(1NF)如果关系模式R的
18、所有的域为简单域,其元素不可再分,则称R为第一范式的关系,简记为R1NF。1NF的关系模式要求属性不能再分,即属性项不能是属性组。下列两个关系模式均不是第一范式:部门(部门号,名称,经理(正经理,副经理)雇员(雇员号,姓名,工资(基本工资,补贴,奖金)可以转化为如下1NF的关系:部门(部门号,名称,正经理,副经理)。雇员(雇员号,姓名,基本工资,补贴,奖金)。2、第二范式(2NF)如果R1NF,且每个非主属性完全函数依赖于关键字,则关系模式R属于第二范式,简记为R2NF。【例】SCT(S,C,CN,GRADE,TNAME,BDATE,SALARY).它满足第一范式,但是存在非主
19、属性对关键字的部分函数依赖。如:CTNAME可以把SCT分解为如下两个关系模式:SC(S,C,GRADE)CT(C,CN,TNAME,BDATE,SALARY)在CT中,CTNAME,TNAMESALARY,存在SALARY对C的传递函数依赖。【问题】不能增加没开课的教师信息。3、第三范式(3NF)如果R2NF,且每个非主属性都不传递函数依赖于关键字,则称关系模式R为第三范式,简记为R3NF。SC是第三范式的,CT不是第三范式的,可以把CT进一步分解为如下两个关系模式:C(C,CN,TNAME)T(TNAME,BDATE,SALARY)3NF问题示例
20、关系模式R(S#,C#,CN,GRADE)中,(S#,C#)和(S#,CN)都可以作为关键字,S#、C#、CN都是主属性,非主属性GRADE没有部分和传递函数依赖,所以R3NF。【问题】当一门课被多个学生选修时,CN的数据冗余问题严重。【原因】主属性C#CN,存在部分函数依赖。【解决方案】R(S#,C#,GRADE)4、BCNF若关系模式R1NF,且函数依赖集中每一个形式为XA的非平凡函数依赖的决定因素都含有关键字,则称R是Boyde/Codd范式的,简记为RBCNF。可以得出关于BCNF关系模式的以下结论:(1)非主属性对关键字完全函数依赖;(2)主属性对不包含它的关键字完全函数依
21、赖;(3)没有属性完全函数依赖于一组非主属性。一个BCNF范式必定是3NF的。四种范式间的关系四种范式之间存在如下的关系:BCNF3NF2NF1NF即:1NF消除非主属性对关键字的部分函数依赖2NF消除非主属性对关键字的传递函数依赖3NF消除主属性对关键字的部分和传递函数依赖BCNF【注意】在实际应用中最有价值的是3NF和BCNF,一般分解到3NF已经足够,但用来表示一个实体集或一个1:n联系的关系一般已经是BCNF。在应用规范化理论时,千万不要盲目追求高范式,因为并非规范化程度越高的关系模式越好。2.4关系数据库设计数据库设计的含义数据库设计一般不是指DBMS的设
22、计,而是指在现有DBMS上建立数据库的过程。数据库应用系统的设计包含两方面的内容:结构特性的设计,也就是数据库模型或数据结构的设计。(重点)行为特性的设计,即应用程序、事务处理的设计。数据库设计的目标1满足用户的应用要求,即能够正确地反映用户的现实环境。2准确模拟现实世界,即准确地反映现实世界的信息类别与信息之间的联系。3能被某个DBMS所接受。4具有良好的性能、较高的质量。存取效率:每个逻辑存取所需的平均物理存取次数的倒数。存储效率:存储每个未加工的数据所需要的实际存储空间的平均字节数的倒数。其他性能,如便于维护与扩充,有较好的安全性与完整性,系统出现故障时容易恢复等。数据库设计
23、的一般过程数据库生命周期一般包含数据库系统的规划、设计、实现、运行管理和维护、扩充和重构等大的阶段。数据库设计过程大致分为以下四个阶段。1需求分析2概念模型设计3逻辑设计4物理设计2.4.1数据需求分析主要任务是通过对现行的手工系统或已有的计算机系统进行调查和分析,以确定企业对即将建立的数据库应用系统的信息要求和处理要求。系统调查系统分析系统分析文档系统调查系统调查:目的是了解企业的业务状况、信息流程、经营方式、处理要求以及组织机构等。可以包括以下几个方面:(1)组织机构调查。(2)业务流程调查。(3)各部门对系统的信息要求和处理要求。(4)企业的限制和目标。系统分析对
24、调查所获得的原始资料必须进行综合的分析,权衡各方面的利弊,确定数据库结构设计和程序设计的策略和方案。(1)业务流程分析。(2)信息收集和分析。(3)处理要求分析。(4)其他各种限制和要求分析。系统分析文档系统分析的结果形成系统分析报告,其主要内容包括系统目标、需求定义、功能说明、系统结构、计算机处理的边界与流程、工作量与预算经费等。其中,与数据库设计关系最大的文档有业务流程图、数据流图、数据词典等。一、数据流图数据流图数据流图(DataFlowDiagram,简称DFD)是描述系统的重要工具,它力图从数据传递和处理的角度,以图形的方式表示数据处理系统的工作状况。数据流图的组
27、输入数据流以及与这些加工有关的数据存储。(4)根据自顶向下,逐层分解的原则,对上层图中全部或部分加工环节进行分解,分为若干子图,下层是上层的进一步说明。数据流图的绘制步骤(2)(5)重复步骤(4),直到逐层分解结束。(6)对图进行检查和合理布局,主要检查分解是否恰当、彻底,DFD中各层是否有遗漏、重复、冲突之处,各层DFD及同层DFD之间关系是否争取及命名、编号是否确切、合理等,对错误与不当之处进行修改。(7)和用户进行交流,在用户完全理解数据图的内容的基础上征求用户的意见。数据流图的绘制步骤(3)a关联图.3.2图0BQRLSMABCABCDEFG12356图2.131NMPBL图2b
28、顶层图d三层图c二层图绘制数据流图过程示意图银行取款数据流图(1)(1)储户将填好的取款单、存折交银行,银行做如下处理:审核并查对帐目,将不合格的存折、取款单退回储户,合格的存折、取款单送取款处理。处理取款修改帐目,将存折、利息单、结算清单及现金交储户,同时将取款单存档。银行取款数据流图(2)画出银行取款处理数据流图。第一步,画出关联数据流图。F2存折、利率单、结算清单、现金F1取款单、存折取款系统PS储户S储户取款处理关联图银行取款数据流图(3)第二步,逐层分解加工,画出下层DFD。取款处理顶层图F1取款单、存折F1.2不合格存折、取款单F2存折、利率单、结算清单、现金D1帐目库
29、F1.1合格存折、取款单取款审核P1S储户S储户D2取款记录取款处理P2【说明】数据流图只能描述系统的概貌,无法表达出每个数据和处理的具体含义,这就需要用数据字典来弥补缺点。二、数据字典数据字典数据字典(DataDictionary,DD)用于定义数据流图中出现的所有数据元素和处理,即给出其确切的内涵解释。这些元素是:数据项、数据结构、数据流、数据存储、处理逻辑和外部实体。采用的符号=表示定义为。例如,学生情况学号+姓名+成绩+地址;+表示“与”:|表示“或”。如,性别男|女;()表示整体,与数学中用法相同;m.n表示值域。如,星期几=1.7,月份=1.12;采用的符号表
34、D)可以是手工的,也可以是自动化的。手工DD是把字典条目逐一填写到卡片或表格中,再把它们按一定顺序排好、装订成册以便查阅。(适合小型系统)也可以编写电子DD。用计算机对字典实施管理。(适合大、中型系统)2.4.2概念结构设计概念结构设计数据库的概念模型是独立于任何计算机系统的信息结构模型,它是现实世界的“纯粹”表示。按照从简单到复杂的原则,使用E-R方法设计概念模型一般要经过三个步骤,即设计用户分E-R图,合并用户分E-R图构成总体E-R图,以及对总体E-R图进行优化。一、分E-R图的设计分E-R图即用户局部视图。(1)划分用户组首先应将数据要求和处理要求接近的用户分在一组;其次应考
35、虑用户组的规模(一般局部视图内的实体数不超过9个)。(2)确定实体及其属性实体和属性之间并不存在一个形式上可以截然划分的界限。【例】学生-系分E-R图的设计在给定的应用环境中,可以遵循以下基本准则来划分实体和属性。属性与它所描述的实体之间只能是单值联系,即联系只能是一对多的。【例】一个学生参加社会团体属性不能再有需要进一步描述的性质。【例】学生和系作为属性的数据项,除了它所描述的实体之外,不能再与其他实体具有联系。【例】社会团体的指导教师符合这三条准则的数据项,一般把它作为属性。分E-R图的设计(3)确定实体之间的联系及其属性在标定实体和属性的同时,要通过分析确定实体之间的联系
36、以及联系的属性,并根据语义确定联系的类型。【例】系-教师:1:n;学生-课程:m:n联系“选课”的属性:成绩分E-R图的设计(4)设计分E-R图在确定了实体、联系和属性之后,各分E-R图的设计就水到渠成了。【例】学校教学管理师资:涉及系、教师、课程、课题等教务:系、学生、课程、教师等文体:学生、指导教师、课外团体、特长等【例】师资部门分E-R图【例】教务部门分E-R图【例】文体部门分E-R图二、总体E-R图的设计总体E-R图即全局视图,它的设计就是分E-R图的综合,即所谓视图的集成。视图集成的具体做法是:选出最大的一个分E-R图作为基础,将其他分E-R图逐一合并上去。总体E-R图的设计在
37、合并的过程中必须注意以下工作。(1)消除命名冲突(2)综合同一实体的所有属性(3)保留两实体之间的不同联系【例如】工厂管理数据库中:职工-设备对生产部门来讲,联系为:使用对设备管理部门来讲,联系为:保养这两个联系均应保留。【说明】为了使总体E-R图简洁,可以不给出属性。【例】综合的教学管理数据库总体E-R图三、总体E-R图的优化设法消去冗余。所谓优化主要就是指冗余信息的消除,使其保持最小冗余度。冗余的数据可用分析的方法加以消除。冗余的联系还可用规范化理论来消除,方法是:(1)用函数依赖表达式表达E-R图中的每一个联系。(2)求函数依赖表达式的最小覆盖。(3)逐一检查不在最小覆盖中
38、的函数依赖表达式,确认是否为冗余,若是则其对应的联系为冗余的联系,应当消去。总体E-R图的优化例如,对于学生、课程、教师这三个实体的两两之间的联系。“教学”联系是冗余的,因为某一教师教过哪些学生或某一学生听过哪些教师的课,完全可以通过学生所学过的课程间接求得。2.4.3逻辑结构设计逻辑结构设计关系数据模型是通过关系来反映客观世界的。关系数据库的逻辑设计的任务,就是采取一定的策略,按照若干准则将概念模型转换为关系数据库管理系统所能接受的一组关系模式,并利用规范化的理论和方法对这组关系模式进行处理。E-R图转换为关系模式(1)(1)根据规则1,对E-R图中的每一个实体分别建立一个关系模式。