第七章数据库设计数据库设计概述需求分析概念结构设计逻辑结构设计数据库的物理设计数据库的实施和维护数据库设计定义广义:是数据库及其应用系统的设计狭义:设计数据库本身一般定义:是指对于一个给定的应用环境,构造最优的数据库模式,建立数据库及其应用系统,使之能够有效地存储和管理数据,满足各种用户的应用需求,包括信息管理要求和数据操作要求。数据库建设基本规律三分技术、七分管理和十二分基础数据数据库设计应该与应用系统设计相结合结构(数据)设计:设计数据库框架或数据库结构行为(处理)设计:设计应用程序、事务处理等7.1.1数据库设计的特点7.1数据库设计概述7.1.2数据库设计的方法手工与经验相结合的方法规范设计法:如新奥尔良方法,将数据库设计分为若干阶段,并采用一些辅助手段实现每一过程。基于E-R模型的设计方法:用E-R模型设计数据库的概念模型3NF的设计方法:用关系理论指导设计数据库的逻辑模型ODL方法:用面向对象方法设计数据库结构7.1.3数据库设计的基本步骤一、数据库设计的准备工作参加数据库设计的人员:1)数据库分析设计人员,其水平决定了数据库系统的质量(1)数据库设计的核心人员(2)自始至终参与数据库的设计2)管理员和用户(1)参与需求分析(2)参与数据库的运行维护3)程序员和操作员,在系统实施阶段参与进来(1)负责编制程序(2)准备软硬件环境1)需求分析综合各个用户的应用需求,是整个设计过程的基础;2)概念结构设计通过对用户需求进行综合、归纳与抽象,形成独立于机器特点,独立于各个DBMS产品的概念模式;3)逻辑结构设计将概念结构转换成具体的数据库产品支持的数据模型,并对其模型进行优化,形成数据库逻辑模式;二、数据库设计的阶段需求分析、概念结构设计、逻辑结构设计、数据库物理设计、数据库实施、数据库运行维护4)数据库物理设计-为逻辑数据模型选取合适的物理结构(包括存储结构和存取方法);5)数据库实施-编制与调试应用程序,组织数据入库,并进行试运行;6)数据库运行维护-正式运行,并不断对其进行评价、调整和修改。应用要求应用要求应用要求应用要求应用1应用2应用3应用4综合概念模式逻辑模式内模式转换转换外模式外模式外模式外模式应用1应用2应用3应用47.1.4数据库各级模式的形成过程映像7.2需求分析1详细调查现实世界要处理的对象2充分了解原系统的工作概况3明确用户的各种需求4确定新系统的功能5考虑今后的扩充性7.2.1.需求分析的任务需求分析的难点:用户缺少计算机知识,无法一下子准确地表达自己的需求,他们所提出的需求往往不断地变化。设计人员缺少用户的专业知识,不易理解用户的真正需求,甚至误解用户的需求。新的硬件、软件技术的出现也会使用户需求发生变化。-与用户不断深入地进行交流,才能逐步得以确定用户的实际需求解决方法:概念设计阶段需求分析阶段熟悉业务活动明确用户需求确定系统边界分析系统功能分析系统数据编写分析报告调查机构情况数据字典DD数据流图DFD数据库设计人员和用户功能模块图一、需求分析的步骤7.2.2需求分析的方法数据来源数据存储数据输出处理数据流数据流信息要求处理要求二、需求分析的方法结构化分析方法(SA):是从最上层的系统组织机构入手,采用自顶向下,逐层分解的方式分析系统,并用数据流图和数据字典描述系统。SA方法把任何一个系统抽象为如下形式。三、数据流图(DFD,DataFlowDiagram)描述数据在系统中流动和变换的过程,表达了数据和处理过程的关系;以图形的方式刻画数据从输入到输出的移动变换过程;数据流程分析的主要工具;系统分析人员与用户进行交流的手段和系统设计的主要依据之一基本组成:外部项:各种实体。数据处理逻辑:描述系统对信息进行处理的逻辑功能。数据存储:逻辑意义上的数据存储环节数据流:数据结构在系统内的传输路径。课程管理的数据流图7.2.3数据字典一、数据字典的用途数据字典是各类数据描述的集合,数据收集和数据分析所获得的主要结果;它所描述的对象都包含于数据流图中,是对数据说明,而不是数据本身;它是一个动态文件,在数据库开发过程中不断的更新。二、数据字典的组成:数据项数据结构数据流数据存储处理过程(1)数据项是不可再分的数据单位;数据项描述={数据项名,数据项含义说明,别名,数据类型,长度,取值范围,取值含义,与其他数据项的逻辑关系}数据项:以“学号”为例数据项:学号含义说明:唯一标识每个学生别名:学生编号类型:字符型长度:8取值范围:00000000至99999999取值含义:前两位表示该学生所在年级,后六位按顺序编号(2)数据结构一个数据结构可以由若干个数据项组成,也可以由若干个数据结构组成,或由若干个数据项和数据结构混合组成。数据结构描述={数据结构名,含义说明,组成:{数据项或数据结构}}数据结构:以“学生”为例数据结构:学生含义说明:是学籍管理子系统的主体数据结构,定义了一个学生的有关信息组成:学号,姓名,性别,年龄,所在系,年级(3)数据流数据流是数据结构在系统内传输的路径。数据流描述={数据流名,说明,数据流来源,数据流去向,组成:{数据结构},平均流量,高峰期流量}数据流:“体检结果”可如下描述:数据流:体检结果说明:学生参加体格检查的最终结果数据流来源:体检数据流去向:批准组成:……平均流量:……高峰期流量:……(4)数据存储数据存储是数据结构停留或保存的地方,也是数据流的来源和去向之一数据存储描述={数据存储名,说明,编号,流入的数据流,流出的数据流,组成:{数据结构},数据量,存取方式}数据存储:“学生登记表”可如下描述:数据存储:学生登记表说明:记录学生的基本情况流入数据流:……流出数据流:……组成:……数据量:每年3000张存取方式:随机存取(5)处理过程处理过程的具体处理逻辑,一般用判定表或判定树来描述。数据字典中只需要描述处理过程的说明性信息处理过程说明性信息的描述:处理过程描述={处理过程名,说明,输入:{数据流},输出:{数据流},处理:{简要说明}}处理过程:“分配宿舍”可如下描述:处理过程:分配宿舍说明:为所有新生分配学生宿舍输入:学生,宿舍输出:宿舍安排处理:在新生报到后,为所有新生分配学生宿舍。要求同一间宿舍只能安排同一性别的学生,同一个学生只能安排在一个宿舍中。每个学生的居住面积不小于3平方米。安排新生宿舍其处理时间应不超过15分钟。7.3概念结构设计7.3.1概念结构概念结构设计:将需求分析得到的用户需求抽象为信息结构即概念模型的过程就是概念结构设计.现实世界机器世界信息世界需求分析概念结构设计逻辑结构设计物理结构设计概念结构设计的重点是信息结构的设计,它独立于逻辑结构设计和DBMS概念结构设计的特点:(1)能真实、充分地反映现实世界(2)易于理解(3)易于更改(4)易于向关系、网状、层次等各种数据模型转换描述概念模型的工具:E-R模型7.3.2概念结构设计的方法与步骤设计概念结构的四类方法:♦自顶向下♦自底向上♦逐步扩张♦混合策略常用策略:自底向上自顶向下地进行需求分析;自底向上地设计概念结构自底向上设计概念结构的步骤:第1步:抽象数据并设计局部视图;第2步:集成局部视图,得到全局概念结构.逻辑结构设计视图集成需求分析抽象数据设计局部视图分E-R图总E-R图返回用户征求意见直至满意一、数据抽象1.分类定义某一类概念作为现实世界中一组对象的类型;这些对象具有某些共同的特性和行为;它抽象了对象值和型之间的“ismemberof”的语义;在E-R模型中,实体型就是这种抽象.7.3.3数据抽象与局部视图设计2.聚集定义某一类型的组成成分;它抽象了对象内部类型和成分之间“ispartof”的语义;在E-R模型中若干属性的聚集组成了实体型,就是这种抽象。3.概括定义类型之间的一种子集联系它抽象了类型之间的“issubsetof”的语义概括有一个很重要的性质:继承性。子类继承超类上定义的所有抽象。二、局部视图设计1)选择局部应用选择一个适当层次的数据流图,图中每一部分对应一个局部应用.2)逐一设计分E-R图标定局部应用中的实体、实体的属性、标识实体的码,确定实体之间的联系及其类型,并进行必要的调整。设计分E-R图的具体步骤:课程管理局部应用分E-R图在课程管理局部应用中主要涉及实体的属性:学生:{姓名,学号,性别,年龄,所在系,年级,平均成绩}课程:{课程号,课程名,学分}教师:{职工号,姓名,性别,职称}教科书:{书号,书名,价钱}教室:{教室编号,地址,容量}班级开设选修讲授教室编号姓名书号书名价钱职称性别年龄课程名地址课程号学分姓名职工号容量性别11mn11课程管理局部应用的E-R图n成绩教学mn年级学号所在系教室课程学生教科书教师平均成绩7.3.4视图的集成(E-R)1(E-R)n(E-R)2初步E-R基本E-R(E-R)1(E-R)2(E-R)12(E-R)3初步E-R基本E-R一次集成逐步集成视图集成的步骤(1)属性冲突——讨论、协商等解决1)属性域冲突:(1)属性值的类型;(2)取值范围2)属性取值单位冲突(2)命名冲突——讨论、协商等解决1)同名异义;2)异名同义(3)结构冲突——根据应用的语义对实体联系的类型进行综合或调整1)同一对象在不同应用中有不同的抽象2)同一实体在不同的局部应用中属性组成不同(个数,次序)3)同一联系,在不同应用中呈现不同类型1.合并分E-R图,解决冲突,生成初步E-R图实例:命名冲突:1)学籍管理中的班主任实体与课程管理中的教师实体在一定程度上属于异名同义.是否优秀班主任职工号姓名性别班主任职称姓名职工号性别教师职称姓名职工号性别是否优秀班主任教师教师教学mn学生学生教学教师mn教师学生指导1n班主任2)学籍管理中教师与学生之间的指导联系,课程管理中教师与学生之间的教学联系,将这两种联系综合为教学联系。结构冲突:在两个局部E-R图中,学生实体属性组成及次序都存在差异,应将所有属性综合,并重新调整次序。姓名学号平均成绩学生姓名年龄平均成绩年级学号所在系学生出生日期姓名年龄平均成绩年级学号所在系学生◆冗余的数据:可由基本数据导出◆冗余的联系:可由其他联系导出2.修改和重构,消除冗余,生成基本E-R图冗余数据和冗余联系举例:(1)学生实体中的年龄属性可以由出生日期推算出来,属于冗余数据,应该去掉。(2)教室实体与班级实体之间的上课联系可以由教室与课程之间的开设联系、课程与学生之间的选修联系、学生与班级之间的组成联系三者推导出来。(3)学生实体中的平均成绩可从选修联系中的成绩属性中推算出来,可消除。分析方法以数据字典和数据流图为依据,根据数据字典中关于数据项之间逻辑关系的说明来消除冗余。消除冗余的方法规范化理论♦确定分E-R图实体之间的数据依赖,得到函数依赖集F♦求函数依赖的最小覆盖集G,计算D=F-G♦逐步考察D中的函数依赖,删除冗余的联系7.4逻辑结构设计把概念结构设计阶段设计好的基本E-R图转换为与选用DBMS产品所支持的数据模型相符合的逻辑结构.逻辑结构设计逻辑结构设计步骤物理设计阶段概念设计阶段一般数据模型关系、网状、层次特定的DBMS支持的数据模型逻辑模型优化模型基本E-R图转换规则DBMS的特点与限制优化方法7.4.1E-R图向关系模型的转换1)一个实体型转换为一个关系模式。实体的属性就是关系的属性,实体的码就是关系的码。出生日期姓名平均成绩年级学号所在系学生转换规则:学生(学号,姓名,出生日期,所在系,年级,平均成绩)2)一个1:1联系可以转换为一个独立的关系模式,也可以与任意一端对应的关系模式合并。班级管理是否优秀班主任职工号姓名班级号学生人数性别11职称教师班级管理(职工号,班级号)或管理(职工号,班级号)班级(班级号,学生人数,职工号)教师(职工号,姓名,性别,职称,班级号,是否为优秀班主任)3)一个1:n联系可以转换为一个独立的关系模式,也可以与n端对应的关系模式合并。班级组成1n学号班级号年级姓名出生日期所在系平均成绩学生人