资源描述
单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,现 代 制 造 信 息 技 术 基 础,单击此处编辑母版标题样式,XU Shixin,现代制造信息技术基础,第一部分 数据库系统概论,数据库设计,徐 世 新,北京航空航天大学,机械学院720,2002 年 7 月,数据库设计,对于一个给定的应用环境,构造最优的数据库模式,建立数据库及其应用系统,使之能够有效地存储数据,满足各种用户的应用要求(信息要求和处理要求),主要内容,数据库设计概述,数据库和信息系统,数据库设计的特点,数据库设计方法概述,数据库设计的基本步骤,需求分析的任务,需求分析的方法,数据字典,概念结构,概念结构设计的方法与步骤,数据抽象与局部视图设计,视图的集成,E-R图向关系模型的转换,数据模型的优化,设计用户子模式,数据库的物理设计的内容和方法,关系模式存取方法选择,确定数据库的存储结构,评价物理结构,数据的载入和应用程序的调试,数据库的试运行,数据库的运行和维护,需求分析,概念结构设计,逻辑结构设计,数据库的物理设计,数据库的实施和维护,数据库设计概述,数据库和信息系统,数据库是信息系统的核心和基础。,数据库把信息系统中大量的数据按一定的模型组织起来,提供存储、维护、检索数据的功能,使信息系统可以方便、及时、准确地从数据库中获得所需的信息。,大型数据库的建设必须应用软件工程的原理和方法。对于从事数据库设计的专业人员来讲,应具备多方面的技术和知识:,数据库的基础知识和数据库设计技术,计算机科学的基础知识和程序设计的方法和技巧,软件工程的原理和方法,应用领域的知识,(1) 特点之一:,数据库建设是硬件、软件和干件的结合。,(2) 特点之二:,数据库设计应该和应用系统设计相结合,即,整个设计过程中要把结构(数据)设计和行为(处理)设计密切结合起来。,数据库设计的特点,程序说明,数据分析,概念模型设计,子模式设计,应用程序设计,功能分析,逻辑数据库设计,现实世界,物理数据库设计,建立数据,程序编码调试,事物设计,功能模型,功能说明,规范设计法中比较著名的有新奥尔良方法,它将数据库设计分为四个阶段:需求分析、概念设计、逻辑设计和物理设计。,规范设计法从本质上看是手工设计方法,其基本思想是过程迭代和逐步求精。,数据库设计工具软件可以自动地或辅助设计人员完成数据库设计过程中的很多任务。,数据设计方法简述,数据库设计的基本步骤,需求分析阶段,数据模型优化,设计物理结构,试验性运行,需求收集和分析,估价设计,性能预测,物理实现,使用、维护数据库,不满意,设计概念结构,设计逻辑结构,不满意,概念设计阶段,逻辑设计阶段,物理设计阶段,数据库实施阶段,数据库运行、维护阶段,应用需求,(数据,处理),转换规则,DBMS,功能,优化方法,应用要求,DBMS,详细特征,将概念结构转换为某个DBMS所支持的数据模型,并对其进行优化,为逻辑数据模型选一个最适合应用环境的物理结构(包括存取结构和存取方法),建立数据库,编制与调试应用程序,组织数据入库,并进行试运行,首先必须准确了解与分析用户需求(包括数据与处理),通过对用户需求进行综合、归纳与抽象,形成一个独立于具体DBMS的概念模型,数据库设计的基本步骤,应用要求,综合,应用要求,概念模式,映象,应用要求,应用要求,应用1,应用2,应用3,应用4,逻辑模式,内模式,映象,转换,外模式,应用1,外模式,应用2,外模式,应用3,需求分析,需求分析的任务,需求分析就是分析用户的要求。其任务是通过详细调查现实世界要处理的对象(组织、部门、企业等),充分了解原系统(手工系统或计算机系统)工作概况,明确用户的各种需求,然后在此基础上确定新系统的功能。,通过调查、收集与分析,获得用户对数据库的如下要求:,(1) 信息要求。指用户需要从数据库中获得信息的内容与性质。由信息要求可以导出数据要求,即在数据库中需要存储哪些数据,(2) 处理要求。指用户要完成什么处理功能,对处理的响应时间有什么要求,处理方式是批处理还是联机处理,(3) 安全性与完整性要求,调查用户需求的具体步骤是:,(1) 调查组织机构情况,(2) 调查各部门的业务活动情况,(3) 在熟悉业务活动的基础上,协助用户明确对新系统的各种要求,(4) 确定新系统的边界,需求分析的方法,在调查过程中,可以根据不同的问题和条件,使用不同的调查方法。常用的调查方法有:,(1) 跟班作业,(2) 开调查会,(3) 请专人介绍,(4) 询问, 设计调查表请用户填写, 查阅记录,分析和表达用户的需求:,结构化分析方法(,SA,方法)。它是由,E.,Yourdon,、Tom Demarco,等人倡导的一种面向数据流的分析方法。,SA,方法使用数据流图、数据字典、结构化英语、判定表和判定树等工具,来建立软件需求说明书。,它将软件系统抽象为一系列的逻辑加工单元,这些逻辑加工单元接受输入数据流,经过加工,使之变换为输出数据流。数据模型用数据流图表示,并用数据字典进行说明。,自顶向下逐层分解的原则,SA,方法从最上层的系统组织机构入手,采用自顶向下、逐层分解的方式分析系统。,软件需求说明书,:一套分层的数据流图;数据字典;补充材料。,需求分析的方法,需求分析的方法,X,2,1,3,4,3.1,3.2,3.4,3.3,2.2,2.1,2.3,数据输出,数据来源,处理,数据流,数据流,数据存储,需求分析的方法,数据流图由四种元素组成:,数据流、处理、数据存储和数据源宿。, 数据流:由一组成分固定的数据组成,它具有名称和流向,用标有名字的箭头表示。, 处理:表示对数据所进行的加工和变换,用圆圈表示,处理的名称是一个动词短语。, 数据存储:表示用文件方式或数据库方式所存储的数据。, 数据源宿:表示数据输入的源点和数据输出的汇点,它们分别表示对系统提供输入数据流的外部实体及接收系统输出数据流的外部实体。,数据存储,数据源宿名称,序号,处理名,数据名,数据流图的绘制:, 确定系统的输入输出, 由外向里画系统的顶层数据流图, 自顶向下逐层分解,绘出分层数据流图,需求分析的方法,M,S,1,设计链传动,已知条件,2,校核链传动,设计结果,已知参数,校核结果,1.1,输入已知参数,已知条件1,1.2,初定传动参数,几何尺寸要求,已知条件2,设计结果,1.3,确定传动参数,1.6,重新设计,1.4,计算结构参数,1.5,校核静强度,输出1,输出4,输出3,设计结果1,输出2,yesj,设计结果2,r,kf,需求分析的方法,绘分层数据流图应注意的问题:, 编号, 父图和子图的平衡,“平衡”是指子图中所有的输入数据流必须是父图中相应的加工的输入数据流,子图中所有的输出数据流必须是父图中相应加工的输出数据流, 分解的深度和层次, 检查数据流的输入和输出,一个加工所产生的某个输出数据在加工中既没有被产生,也没有作为输入数据输入到这个加工,则这个数据一定是在加工过程中被遗漏了,一个加工的某个输入既没有在加工中参加变换,又没有被输出,则一般应将此输入数据去掉以简化加工之间的联系,“决定比赛名单”这个加工是根据输入“项目”和“运动员名单”来产生输出“项目参加者”的,若有,运动员名单=姓名+单位+项目,项目参加者=姓名+项目+运动员号码,“决定比赛名单”这个加工需要输出“运动员号码”,但此加工本身是不产生“运动员号码”的,在输入数据中也不包含它,则可肯定,此数据一定是在输入中被遗漏了,应在输入流中加入。运动员名单=姓名+单位+运动员号码+项目,决定比赛名单,项目,项目参加者,运动员名单, 尽量简化处理间的联系,并注意处理分解的均匀,需求分析的方法,加工“开发票”是根据输入数据流“订货单”和“价格”文件来产生输出数据流“发票”的,若这些数据流的组成如下;,订货单=单位名+货名+货号+数量,价格=货名+单价,发票=单位名+货名+单价+数量+总计,可以发现,这个加工中并不使用“货号”这个数据,故可在输入数据流“订货单”中去掉它,,订货单=单位名+货名+数量,开发票,订货单,发票,价格,数据项,是不可再分的数据单位,数据项描述= 数据项名,数据项含义说明,别名,数据类型,长度,取值范围,取值含义,与其他数据项的逻辑关系,数据项之间的联系,示例,数据项名:,m,别名:齿轮的模数,含义说明:齿轮的模数,m=p/,。,互相啮合的两齿轮,其模数相等。采用标准模数可以减少加工齿轮刀具的数量,数据类型:枚举数据,长度:1字节,取值范围:1|1.25|1.5|2|2.5|3|4|5|6|8|10|12|16|20|25|32|40|50,与其他数据项的逻辑关系:齿轮的模数,m,确定后,可算出轮齿的基本尺寸(如齿距、齿高等),注释:模数采用第一系列,单位为,mm,数据字典,数据字典是系统中各类数据描述的集合,是进行详细的数据收集和数据分析所获得的主要成果。数据字典通常包括数据项、数据结构、数据流、数据存储和处理过程五个部分。,数据结构,反映了数据之间的组合关系,数据结构描述= 数据结构名,含义说明,组成:数据项或数据结构,示例,数据结构名:斜齿轮,含义说明:斜齿圆柱齿轮的基本参数,组成:法项模数(,m,n,)+,齿数(,z)+,螺旋角(,),数据流,是数据结构在系统内传输的路径,数据流描述=数据流名,说明,数据流来源,数据流去向,组成:数据结构,平均流量,高峰期流量,示例,数据流名:链传动已知条件,数据流来源:设计要求,数据源,S,数据流去向:处理1,“设计链传动”,组成:小链轮转速(,n,1,)+,传动比(,i)|,大链轮转速(,n,2,)+,小链轮传动功率(,P)+(,中心距要求),数据字典,数据存储,是数据结构停留或保存的地方,也是数据流的来源和去向之一,数据存储描述= 数据存储名,说明,编号,输入的数据流,输出的数据流,组成:数据结构,数据量,存取频度,存取方式,示例,数据存储名:传动比系数,说明:,ki,输出数据流:已知条件,组成:传动比(,i)+,传动比系数(,ki,),数据存储名:定期帐目,组成:帐号+户名+款额+存期+存入日期+利息+储户地址,存取方式:按帐号递增顺序排列,数据字典,处理过程,的具体逻辑一般用判定表或判定树来描述,处理过程描述= 处理过程名,说明,输入:数据流,输出:数据流,处理:简要说明,示例,处理过程名:处方划价,说明:计算患者的付费金额,输入:收费价目表+处方+患者类型,输出:付费金额+付费明细表,处理:按收费价目表,根据处方上的药品数量和处置,计算总额; 根据患者类型(公费、自费等),确定付费比例,然后由上面的总额计算实际付费金额,处理过程名:设计链传动,输入:已知条件,输出:传动参数+结构参数+轴压力,处理:依照中的方法,数据字典,数据字典,数据字典是关于数据库中数据的描述,即元数据,而不是数据本身。,需求分析这一阶段收集到的基础数据(用数据字典来表达)和一组数据流程图是下一步进行概念设计的基础。,强调两点:,需求分析阶段一个重要而困难的任务是收集将来应用所涉及的数据,设计者应充分考虑到可能的扩充和修改,使设计易于更改,系统易于扩充。,必须强调用户的参与。,数据库应用系统和广泛的用户有密切的联系,许多人要使用数据库,数据库的建立又可能对更多人的工作环境产生重要影响。,逻辑描述工具(结构化语言),结构化语言适合于逻辑加工关系简单的描述。它的结构通常分为内外两大层。外层可有多层,并可相互嵌套,具有较固定的格式。常见的语句有IF、THEN、ELSE、DO、WHILEENDWHILE、DO CASEENDCASE等,用于描述顺序、选择和重复的控制结构;内部则比较灵活,可以使用数据词典中定义过的词汇、运算符、关系符和一些易于理解的名词等。,例 某航空公司行李托运收费计算方法,用自然语言描述如下:,乘客可以免费携带30,kg,重的行李;,超过30,kg,,国内乘客,乘坐头等舱,超重部分每千克收费4元;乘坐其他舱超重部分每千克收费6元;,超过30,kg,,国外乘客,乘坐头等舱,超重部分每千克收费8元;乘坐其他舱超重部分每千克收费12元。,逻辑描述工具(结构化语言),IF 行李重量,30kg,托运费=0,/免交托运费,ELSE,IF,是国内乘客,IF,是头等舱,托运费=(W-30)4,/国内乘客、头等舱,ELSE,托运费= (W-30)6,/国内乘客、其他舱,ENDIF,ELSE,IF,是头等舱,托运费=(W-30)8,/国外乘客、头等舱,ELSE,托运费= (W-30)12,/国外乘客、其他舱,ENDIF,ENDIF,ENDIF,逻辑描述工具(判定表),一张判定表通常由四部分组成:,左上部列出的是所有的条件;,左下部为所有可能的操作;,右上部表示各种条件组合的一个矩阵;,右下部是对应于每种条件组合应有的操作。,条件组合,1,2,3,4,5,国内乘客,T,T,F,F,头等舱,T,F,T,F,行李重量W,30kg,T,F,F,F,F,免费,(W-30)4,(W-30)6,(W-30)8,(W-30)12,逻辑描述工具(判定表),条件组合,1,2,3,4,5,6,7,内表面,T,T,T,T,T,T,T,孔,T,T,T,T,T,T,T,8级以下,T,F,F,F,F,F,F,78级,F,T,T,F,F,F,F,7级以上,F,F,F,T,T,T,T,硬化处理,F,F,F,F,F,T,T,高位置要求,F,F,T,F,T,F,T,钻,扩,镗,铰,磨,逻辑描述工具(判定树),行李费算法,行李重量W30,行李重量W30,国内乘客,国外乘客,头等舱,其他舱,头等舱,其他舱,(W-30)4,(W-30)6,(W-30)8,(W-30)12,免费,逻辑描述工具(判定树),钢质轴杆件,内表面,外表面,孔,槽,8级以下,78级,7级以上,无高位置要求,钻,钻、扩,钻、镗,钻、扩、铰,内螺纹,有较高位置要求,未硬化处理,经硬化处理,无位置要求,有位置要求,无位置要求,有位置要求,钻、扩、镗,钻、扩、磨,钻、镗、磨,概念结构设计,概念结构的主要特点:,能真实、充分地反映现实世界,包括事物和事物之间的联系,能满足用户对数据的处理要求。是对现实世界的一个真实模型,易于理解,从而可以用它和不熟悉计算机的用户交换意见,用户的积极参与是数据库设计成功的关键,易于更改,当应用环境和应用要求改变时,容易对概念模型修改和扩充,易于向关系、网状、层次等各种数据模型转换,概念结构,将需求分析得到的用户需求抽象为信息结构即概念模型的过程就是概念结构设计。,概念结构是各种数据模型的共同基础,它比数据模型更独立于机器、更抽象,从而更加稳定。描述概念模型的有力工具是E-R模型。,概念结构设计的方法与步骤,设计概念结构通常有四类方法:,(1),自顶向下,。即首先定义全局概念结构的框架,然后逐步细化,(2),自底向上,。即首先定义各局部应用的概念结构,然后将它们集成起来,得到全局概念结构,(3),逐步扩张,。首先定义最重要的核心概念结构,然后向外扩充,以滚雪球方式生成其他概念结构,直至总体概念结构,混合策略,。即将自顶向下和自底向上相结合,用自顶向下策略生成一个全局概念结构框架,以它为骨架集成由自底向上策略中设计的各局部概念结构,概念模式,概念模式,概念模式,子需求,子需求,子需求,概念模式,概念模式,全局概念模式,策略:自顶向下分析需求与自底向上设计概念结构,概念结构设计的方法与步骤,概念模式1.1,概念模式1.2,需求分析,(自顶向下),需求1.1,需求1.2,需求1,概念模式1,概念模式n,全局概念模式,(应用1),(应用n),概念模式n.1,概念模式n.2,需求n.1,需求n.2,需求n,需求,概念结构设计,(自底向上),概念结构设计的方法与步骤,自底向上设计概念结构的步骤:,抽象数据并设计局部视图,集成局部视图,得到全局的概念结构,视图集成,需求分析,逻辑结构设计,返回用户,征求意见,直到满意为止,数据抽象、局部视图的设计,DFD、DD,分E-R图,总E-R图,一般有三种数据抽象:,分类,。定义某一类概念作为现实世界中的一组对象的类型。这些对象具有某些共同的特性和行为。它抽象了对象值和型之间的“is member of”的语义,数据抽象与局部视图设计,张三,李四,学生,王二,“is member of”,学生,研究生,本科生,“is subset of”,学生,“is part of”,学号,姓名,专业,聚集,。定义某一类型的组成部分。它抽象了对象内部类型和成分之间的“is part of”的语义,概括,。定义类型之间的一种子集联系。它抽象了类型之间的“is subset of”的语义。概括具有继承性。,数据抽象与局部视图设计,概念结构设计的第一步是对需求分析阶段收集到的数据进行分类、组织,形成实体,标识实体的码,确定实体之间的联系类型,设计分E-R图。,选择局部应用,。根据某个系统的具体情况,在多层的数据流图中选择一个适当层次的数据流图,作为设计分E-R图的出发点。让这组图的每一部分对应一个局部应用。人们往往以中层数据流图作为设计分E-R图的依据。,逐一设计分E-R图,。将局部应用所涉及的数据从数据字典中取出来,参照数据流图,标定局部应用中的实体、实体的属性、标识实体的码,确定实体之间的联系及其类型。,物质管理子系统,设计分E-R图的出发点,某工厂MIS,销售管理子系统,人事管理子系统,为了简化E-R图的处置,现实世界的事物能作为属性对待的,尽量作为属性对待。本来,实体与属性之间并没有形式上可截然划分的界限,但可给出两条准则: 作为“属性”,不能再具有需要描述的性质。 “属性”必须是不可分的数据项,不能包含其他属性;“属性”不能与其他实体具有联系,即E-R图中所表示的联系是实体之间的联系。,数据抽象与局部视图设计,职工,职工,聘任,职称,职工号,姓名,年龄,职称,职工号,姓名,年龄,职称代码,工资,住房标准,例,在医院中,一个病人只能住在一个病房,病房号可以作为病人实体的一个属性。但若病房还要与医生实体发生联系,即一个医生负责若干病房的病人的医疗工作,则病房应作为一个实体。,数据抽象与局部视图设计,病人,病人,住在,病房,住院号,姓名,病房号,住院号,姓名,医生,医疗,n,1,m,1,数据抽象与局部视图设计,例,若一种货物只存放在一个仓库,则可以把存放货物的仓库号作为描述货物存放地点的属性。但若一种货物可存放在多个仓库中,或仓库本身又用面积作为属性,或与职工发生管理上的联系,则就应把仓库作为一个实体。,货物,货号,单价,存放仓库号,存量,货物,仓库,存放,m,n,描述,货物,单价,仓库号,面积,管理,职工,p,货物,仓库,存放,m,描述,货物,单价,仓库号,面积,n,1,数据抽象与局部视图设计,实例 销售管理子系统分E-R图的设计。,主要功能:处理顾客和销售员送来的订单;工厂是根据订货安排生产的;交出货物同时开出发票;收到顾客付款后,根据发票存根和信贷情况进行应收款处理。,数据抽象与局部视图设计,顾客,1.0,送进订单,2.0,处理订单,3.0,开发票,4.0,支付过帐,5.0,提供应收帐款,主管部门,生产部门,产品描述,应收帐款,应收帐款,订单记事本,结算数据,包装通知单,(不)批准,订单数据,当前价格,顾客帐目状况,已批准订单,校对订单数据,主管部门(不)批准,应收帐款报表,准备发放细节,生产通知单,订单细节,发票,调整,未付差额调整,财务费用变动,数据抽象与局部视图设计,顾客,1.1,核对价格,1.2,核对帐目状况,1.3,批准订单,主管部门,产品描述,应收帐款,(不)批准,订单数据,当前价格,顾客帐目状况,已核对价格的订单,校对订单数据,主管部门(不)批准,帐目状况已核实的订单,已批准的订单,接收订单,视图抽象与局部视图设计,处理订单,2.1,登记订单,2.2,分配工种号,2.3,准备订货卡,生产部门,订单记录本,已批准的订单,订单的细节,已登记的订单,待完成订单报表,生产通知单,编好号的订单,订货卡,待完成订货清单,准备发货细节,2.4,准备待完成订单报表,待完成订单,工种号,视图抽象与局部视图设计,开发票,3.1,开发票,3.2,分配发票号,生产部门,包装通知单,准备发货细节,发票,编过号的发票,发票记录本,发票,发票主清单,顾客,应收帐款,发票,视图抽象与局部视图设计,4.1,送进结算,4.2,记入贷方余额,结算数据,支付,已批准的信贷,信贷,顾客,4.3,批准信贷,4.4,记入借方余额,调整,调整,应收帐款,发票,支付过帐,视图抽象与局部视图设计,支付,订单,m,顾客,应收帐款,支付,1,n,1,产品,?,?,分E-R图的框架,每张订单由订单号、若干头信息和订单细节组成。订单细节又有订货的零件号、数量等来描述。订单细节不应作为订单的属性处理而应该上升为实体。一张订单可以定若干产品,故订单与订单细节两实体之间是一对多的联系。,原订单和产品的联系实际上是订单细节和产品的联系。,工厂对大宗订货给予优惠。每种产品都规定了不同订货数量的折扣,应增加一个“折扣规则”实体存放这些信息。,视图抽象与局部视图设计,销售管理子系统的分E-R图,订货,订单,n,顾客,应收帐款,支付,1,n,1,产品描述,n,1,组成,订单细节,n,1,参照1,折扣规则,n,参照2,1,对每个实体定义的属性如下:,顾客:,顾客号,,,顾客名,地址,电话,信贷状况,帐目余额,订单:,订单号,,顾客号,订货项数,订货日期,交货日期,工种号,生产地点,订单细则:,订单号,细则号,,零件号,订货数,金额,应收帐款:,顾客号,订单号,,发票号,应收金额,支付日期,支付金额,当前余额,贷款限额,产品描述:,产品号,,产品名,单价,重量,折扣规则:,产品号,订货量,,折扣,视图的集成,每次集成局部E-R图时需要分两步:,(1) 合并。,解决各分,E-R,图之间的冲突,将各分,E-R,图合并起来生成初步,E-R,图。,(2) 修改和重构。,消除不必要的冗余,生成基本,E-R,图。,视图的集成可以有两种方式:,多个分,E-R,图一次集成;,逐步集成,用累加的方式一次集成两个分,E-R,图。,合并,(消除冲突),修改与重构,(消除不必要的冗余),集成视图,分析,规范化理论,分E-R图,初步E-R图,基本E-R图,视图的集成,合并分E-R图,生成初步E-R图:,(1) 属性冲突,属性域冲突,即属性值的类型、取值范围或取值集合不同,属性取值单位冲突,(2) 命名冲突,(3) 结构冲突,同一对象在不同应用中具有不同的抽象。解决方法通常是把属性变为实体或把实体变为属性,使同一对象具有相同的抽象。,同一实体在不同分,E-R,图中所包含的属性个数和属性排列次序不完全相同。解决方法是使该实体的属性取各分,E-R,图中属性的并集,再适当调整属性的次序。,视图的集成,构成,零件,m,产品,n,(E-R)1,数量,供应商,供应,n,p,m,数量,产品,零件,(E-R)2,供应商,供应,n,p,构成,m,数量1,产品,零件,数量2,m,n,(E-R)12,视图的集成,消除不必要的冗余,生成基本E-R图:,(1) 分析方法。,消除冗余主要采用分析方法,即以数据字典和数据流图为依据,根据数据字典中关于数据项之间逻辑关系的说明来消除冗余,仓库,使用,n,n,消耗,m,产品,零件,用量Q3,m,n,构成,材料,耗用量Q2,供应,m,存放量Q5,库存量Q4,1,零件数Q1,n,Q3= Q1,Q2;Q4=,Q5。故Q3、Q4是冗余数据,可以消去,产品与材料间m:n的冗余联系也应消去,视图的集成,(2) 规范化理论。,确定分,E-R,图实体之间的数据依赖,求函数依赖集,F,L,与其最小覆盖,G,L,的差集,D,,然后逐一考察,D,中的函数依赖,确定是否是冗余的联系,若是,就把它去掉。,项目,负责,n,m,属于,1,部门,职工,天数,n,1,生产,1,由于规范化理论受到泛关系假设的限制,,应注意下面两个问题:,冗余的联系一定在,D,中,而,D,中的联系不一定是冗余的联系,当实体之间存在多种联系时,要将实体之间的联系在形式上加以区分。(如,负责人,职工号部门号,部门号负责人.职工号,),视图的集成,实例 某工厂管理信息系统的视图集成。,产品,负责,n,m,属于,1,部门,职工,天数,n,1,参加,1,领导,1,1,组成,订单,n,顾客,应收款,支付,1,n,1,n,1,订单细节,n,1,参照1,折扣规则,供应商,供应,n,p,m,供应量,零件,参照2,1,库存,仓库,m,n,n,订货,库存量,逻辑结构设计,逻辑结构设计的步骤,(1) 将概念结构转换为一般的关系、网状、层次模型;,(2) 将转换来的模型向特定,DBMS,支持下的数据模型转换;,(3) 对数据模型进行优化。,转换规则,DBMS的特点和限制,特定DBMS支持,下的数据模型,概念结构,基本E-R图,一般数据模型,关系,网状,层次,优化的数据模型,优化方法,E-R图向关系模型的转换,E-R图转换为关系模式一般遵循如下原则:,一个实体型转换为一个关系模式。实体的属性就是关系的属性,实体的码就是关系的码。,一个1:1联系可以转换为一个独立的关系模式,也可以与任意一端对应的关系模式合并。,一个1:,n,联系可以转换为一个独立的关系模式,也可以与,n,端对应的关系模式合并。若转换为一个独立的关系模式,则与该实体相连的各实体的码以及联系本身的属性均转换为关系的属性,而关系的码为,n,端实体的码,一个,m:n,联系转换为一个关系模式。与该联系相连的各实体的码以及联系本身的属性均转换为关系的属性,而关系的码为实体的码,三个或三个以上实体间的一个多元联系可以转换为一个关系模式。与该多元联系相连的各实体的码以及联系本身的属性均转换为关系的属性,而关系的码为各实体码的组合。,具有相同码的关系模式可以合并。,实例 E-R图转换为关系模型,部门(,部门号,,,部门名,经理的职工号,,),职工(,职工号,,职工名,部门号,职务,),产品(,产品号,,产品名,产品组长的职工号,,),供应商(,供应商号,,姓名,,),零件(,零件号,,零件名,),职工工作(,职工号,,,产品号,,工作天数,),供应(,产品号,,,供应商号,,,零件号,,供应量),E-R图向关系模型的转换,数据模型的优化,数据库逻辑设计的结果不是唯一的。为了进一步提高数据库应用系统的性能,还应该根据应用需要适当地修改、调整数据模型的结构,这就是数据模型的优化。关系模型的优化通常以规范化理论为指导。,确定数据依赖。按需求分析阶段所得到的语义,分别写出每个关系模式内部各属性之间的数据依赖以及不同关系模式属性之间的数据依赖。,对于各个关系模式之间的数据依赖进行极小化处理,消除冗余的联系。,按照数据依赖的理论对关系模式逐一进行分析,考察是否存在部分函数依赖、传递函数依赖、多值依赖等,确定各关系模式分别属于第几范式。,按照需求分析阶段得到的处理要求,分析这些模式对于这样的应用环境是否合适,确定是否要对某些模式进行合并或分解。,对关系模式进行必要的分解,提高数据操作的效率和存储空间的利用率。常用的两种分解方法是水平分解和垂直分解。,水平分解是把(基本)关系的元组分为若干子集合,定义每个子集合为一个子关系,以提高系统的效率,垂直分解是把关系模式,R,的属性分解为若干子集合,形成若干子关系模式。其原则是经常在一起使用的属性从,R,中分解出来形成一个子关系模式,设计用户外模式,将概念模型转换为全局逻辑模型后,还应根据局部的应用要求,结合具体DBMS的特点,设计用户的外模式。在RDBMS中可以利用视图设计更符合局部用户需要的外模式。在定义外模式时可以注重考虑用户的习惯与方便。包括:,(1) 使用更符合用户习惯的别名,(2) 可对不同级别的用户定义不同的视图,以保证系统的安全性,(3) 简化用户对系统的使用,产品(产品号,产品名,规格,单价,生产车间,生产负责人,产品成本,产品合格率,质量等级),为一般顾客建立视图:产品1(产品号,产品名,规格,单价),为销售部门建立视图:产品2(产品号,产品名,规格,单价,生产成本),数据库的物理设计,数据库在物理设备上的存储结构与存取方法称为,数据库的物理结构,,它依赖于给定的计算机系统,为一个给定的逻辑数据模型选取一个最适合应用要求的物理结构的过程,就是,数据库的物理设计, 确定数据库的物理结构,在关系数据库中主要指存取方法和存储结构;,对物理结构进行评价,评价的重点是时间和空间效率,数据库的物理设计的内容和方法,首先,对要运行的事物进行详细分析,获得选择物理数据库设计所需要的参数,其次,要充分了解所用的,DBMS,的内部特性,特别是系统提供的存取方法和存储结构,对于数据库查询事物,需要得到如下信息:,查询的关系,查询条件所涉及的属性,连接条件所涉及的属性,查询的投影属性,对于数据更新事物,需要得到如下信息:,被更新的关系,每个关系上的更新操作,修改操作要修改的属性值,通常对于关系数据库物理设计的内容主要包括:, 为关系模式选择存取方法,设计关系、索引等数据库文件的物理存储结构,关系模式存取方法选择,索引存取方法的选择:根据应用要求确定对关系的哪些属性列建立索引、哪些属性列建立组合索引、哪些索引要设计为唯一索引等。, 如果一个(或一组)属性经常在查询条件中出现,则考虑在这个(或这组)属性上建立索引(或组合索引) ;,如果一个属性值经常作为最大值和最小值等聚集函数的参数,则考虑在这个属性上建立索引;,如果一个,(或一组),属性经常在连接操作的连接条件中出现,则考虑在这个,(或这组),属性上建立索引。,关系模式存取方法选择,为了提高某个属性(或属性组)的查询速度,把这个或这些属性(,聚簇码,)上具有相同值的元组集中存放在连续的物理块称为,聚簇,聚簇存取方法的选择:确定需要建立多少个聚簇,每个聚簇中包括哪些关系。,首先,设计侯选聚簇。,对经常在一起进行连接操作的关系可以建立聚簇;,若一个关系的一组属性经常出现在相等比较条件中,则该单个关系可建立聚簇;,若一个关系的一个(或一组)属性上的值重复率很高,则此单个关系可建立聚簇。,然后,检查侯选聚簇中的关系,取消其中不必要的关系。, 从聚簇中删除经常进行全表扫描的关系; ,从聚簇中删除更新操作远多于连接操作的关系;, 不同的聚簇中可能包含相同的关系,一个关系可以在某一个聚簇中,但不能同时加入多个聚簇。要从这多个聚簇方案中选择一个较优的,即在这个聚簇上运行各种事物的总代价最小。,确定数据库的存储结构,确定数据库物理结构主要指确定数据的存放位置和存储结构,包括确定关系、索引、聚簇、日志、备份等的存储安排和存储结构;确定系统配置等。, 确定数据的存放位置。为了提高系统性能,应该根据应用情况将数据的易变部分与稳定部分、经常存取部分和存取频率较低部分分开存放。,确定系统配置。,DBMS,产品一般都提供了一些系统配置变量、存储分配参数,供设计人员和,DBA,对数据库进行物理优化。,评价物理结构,数据库物理设计过程中需要对时间效率、空间效率、维护代价和各种用户要求进行权衡,其结果可以产生多种方案,数据库设计人员必须对这些方案进行细致的评价,从中选择一个较优的方案作为数据库的物理结构。,评价物理数据库的方法完全依赖于所选用的,DBMS,,主要是从定量估算各种方案的存储空间、存取时间和维护代价入手,对估算结果进行权衡、比较,选择出一个较优的合理的物理结构,若该结构不符合用户需求,则需要修改设计。,数据库的实施和维护,数据的载入和应用程序的调试,数据的载入和应用程序的调试,数据的载入。数据的转换,组织数据入库。,若原系统是手工系统,尽量设计一个数据录入子系统;若原系统是数据库系统,尽量使用,DBMS,的数据转换工具, 应用程序的编码和调试,数据库的试运行, 应分期分批地组织数据入库,先输入小批量数据做调试用;,应首先调试,DBMS,的恢复功能,做好数据库的转储和恢复工作,数据库的运行和维护,在数据库运行阶段,对数据库经常性的维护工作是由DBA完成的,它包括:,数据库的转储和恢复,数据库的安全性、完整性控制,数据库性能的监督、分析和改造,数据库的重组织与重构造,习题,设计一个图书馆数据库,此数据库中对每个借阅者保存读者记录,包括:读者号、姓名、地址、性别、年龄、单位。对每本书存有:书号、书名、作者、出版社。对每本被借出的书存有读者号、借出日期和应还日期。要求:给出E-R图,再将其转换为关系模型。,分析,:这里涉及读者和书两个实体。每位读者可借阅多本书,而每本书在一段时间内只能被一位读者借阅。所以读者与书之间的联系是一对多的联系。,读者,书,借阅,1,n,读者号,姓名,书号,出版社,书名,作者,性别,年龄,单位,地址,借出日期,应还日期,习题,对每个实体定义的属性如下:,读者:,读者号,,,姓名,地址,性别,年龄,单位 ,书:,书号,,书名,作者,出版社 ,E-R图转换为关系模式一般遵循的原则(只列出与此题有关的):,一个实体型转换为一个关系模式。实体的属性就是关系的属性,实体的码就是关系的码。,一个1:,n,联系可以转换为一个独立的关系模式,也可以与,n,端对应的关系模式合并。若转换为一个独立的关系模式,则与该实体相连的各实体的码以及联系本身的属性均转换为关系的属性,而关系的码为,n,端实体的码,具有相同码的关系模式可以合并。,将上面的E-R图转换为关系模型:,读者(,读者号,,,姓名,地址,性别,年龄,单位 ),书(,书号,,书名, 作者, 出版社,读者号,借出日期, 应还日期,),读者(,读者号,,姓名,地址,性别,年龄,单位),书(,书号,,书名,作者,出版社),借阅(,书号,,读者号,借出日期,应还日期),数据库应用开发实例,系统的需求分析,现要开发一个简化的教务管理系统,下面是用户对系统的陈述:,该系统主要包括学生信息查询、教务信息维护和学生选课等三部分。其中前两项功能主要为教务人员使用,使用时要核对用户名和口令。,“,学生信息查询,”主要是按指定系检索该系的学生信息,其中包括所有的学生记录和学生总数。,“,教务信息维护,”主要是维护学生、系、课程和学生选课及成绩等方面的基本信息。包括增、删、改、查等功能。,“,学生选课,”是为学生提供选课界面。该界面要列出所有课程信息供学生查询和选课。学生进入该界面后,首先要输入自己的学号。该界面核对学号后即显示该生姓名和已获得的学分,同时显示出该同学的选课课表,课表反映该生选课情况。学生选课要受到一些条件的约束,如课程名额限制、课程时间冲突等。该界面允许学生选课和退选。,系统的需求分析,系统的顶层数据流图,学生,教务员,P0,教务管理系统,查询要求,选课输入信息,数据库,选课结果,修改要求,查询结果,修改结果,验证结果,注册信息,系统的需求分析,经过细化后得到系统的第二层数据流图,P1,登录处理,P4,选课处理,P2,学生信息检索,教务员,学生,教务员注册表D1,课程纪录D4,学生纪录D3,系纪录D2,查询结果,验证结果,查询要求,调用信息,修改要求,注册信息,系维护信息,学生维护信息,选课维护信息,课程维护信息,选课信息,学生姓名,选课结果,选课要求,课程信息,修改结果,P3,教务信息维护,调用信息,调用信息,学生纪录D3,选课纪录D5,系统的需求分析,编写数据字典,主要数据流定义如下:,数据流名称:注册信息,位置:教务员,P1,定义:注册信息=教务员注册名+口令,说明:“查询”和“维护”功能仅对教务员,所以教务员使用这些功能时,要输入合法的注册名及口令,以获得操作权,数据流名称:验证信息,位置:,P1,教务员,定义:验证信息= 登录成功|用户名未注册|口令错误 ,说明:告知用户登录的情况,若成功可直接进入操作界面,数据流名称:查询要求,位置:教务员,P2,定义:查询要求=指定系,说明:用户通过选择指定要查询的系及学生,系统的需求分析,数据流名称:查询结果,位置:,P2,教务员,定义:查询结果=系记录+系统计人数+ 学生记录 ,说明:查询结果包括指定系的信息、系学生数(统计结果)和学生记录(可同时显示多条记录),数据流名称:修改要求,位置:教务员,P3,定义:修改要求= 系|学生|课程|选课 ,说明:指定要维护的对象,然后输入修改信息(增、删、改),数据流名称:选课要求,位置:学生,P4,定义:选课要求=学号+指定课程,说明:学生在选课界面要首先输入学号,然后要指定选(退)课,数据流名称:选课结果,位置:,P4,学生,定义:选课结果=(出错信息)+已选学分+新课表,说明:出错信息包括学号错、授课时间冲突、名额限制、操作错误等,系统的需求分析,数据存储定义如下:,数据存储名称:教务员注册表D1,输入:输出:,P1,数据结构:教务员注册名+口令,说明:该注册信息由专人维护,该维护功能不在本系统范围内,数据存储名称:系记录D2,输入:,P3,输出:,P2,P3,数据结构:系号+系名+电话,说明:系号、系名都是唯一,数据存储名称:学生记录D3,输入:,P3,输出:,P2,P3,P4,数据结构:学号+姓名+性别+出生年月+系名,说明:学号唯一,系统的需求分析,数据存储名称:课程记录D4,输入:,P3,P4,输出:,P3,P4,数据结构:课程号+课程名+学分+上课时间+名额,说明:课程号、课程名都是唯一,数据存储名称:选课记录D5,输入:,P3,P4,输出:,P3,P4,数据结构:学号+课程号+成绩,说明:学完课程后,成绩以百分制填入,没有成绩表示为新选课程,数据项定义如下:,教务员注册表,数据项名,类型,长度,注明,注册名,字符型,16,限英文字符或汉字,口令,字符型,8,英文字母和数字,数据项名,类型,长度,注明,系号,字符型,4,英文字母和数字,系名,字符型,16,不多于8个汉字,电话,字符型,8,仅限数字,系统的需求分析,系记录,学生记录,数据项名,类型,长度,注明,学号,字符型,8,头两位表示入学年份,姓名,字符型,16,不多于8个汉字,性别,字符型,1,0女,非0男,出生年月,日期型,格式:yyyy-mm-dd,系号,字符型,4,英文字母和数字,系统的需求分析,课程记录,数据项名,类型,长度,注明,课称号,字符型,8,英文字母和数字,课程名,字符型,16,不多于8个汉字,学分,数值型,1,1 4,上课时间,数值型,2,24表示星期二第四大节,名额,数值型,4,0 9999,选课记录,数据项名,类型,长度,注明,学号,字符型,8,头两位表示入学年份,课程号,字符型,8,英文字母和数字,成绩,字符型,2,0 100,系统的概念结构设计,根据对数据流图和数据字典的分析,确定该应用中的实体、属性和实体之间的联系,并画出E-R图,包含,学生,n,系,课程,对应,1,n,1,选课,1,n,对应,教务员,对每个实体定义的属性如下:,教务员:,注册名,,,口令 ,系:,系号,,系名,电话,学生: ,学号,,姓名,性别,出生年月,系号,课程:,课程号,,课程名,学分,授课时间,名额,选课: ,学号,,,课程号,,成绩,系统的逻辑结构设计,将上面的E-R图转换为关系模型:,教务员(,注册名,,,口令 ),系(,系号,,系名,电话,),学生(,学号,,姓名,性别,出生年月,系号,),课程(,课程号,,课程名,学分,授课时间,名额,),选课(,学号,,,课程号,,成绩,),将上面一般的关系数据模型向特定的RDBMS的模型转换。利用CREATE语句建立上述关系,并定义好完整性约束。,例如:,教务员,administrants,(,account,,,password ),系,departments(,Dno,,,Dname,,,Dphone,),学生,students(,Sno,,,Sname,,,Ssex,,,Sbirth,,,SDno,),课程,courses(,Cno,,,Cname,,Credit,,Ctime,,Quota ),选课,studCourse,(,Sno,,,Cno,,Grade ),系统的逻辑结构设计,例如:在ACCESS2000上建立上面各个表的CREATE语句如下:,系,CREATE TABLE departments,(,Dno,CHAR(4) PRIMARY KEY,Dname,CHAR(16) UNIQUE,Dphone,CHAR(8) UNIQUE,);,教务员,CREATE TABLE,administrants,( account CHAR(16) PRIMARY KEY,password CHAR(8),);,学生,CREATE TABLE students,(,Sno,CHAR(8) PRIMARY KEY,Sname,CHAR(16),Ssex,BIT,Sbirth,DATE,SDno,CHAR(4),CONSTRAINT FK_SD REFERENCES departments(,Dno,),);,系统的逻辑结构设计,课程,CREATE TABLE courses,(,Cno,CHAR(8) PRIMARY KEY,Cname,CHAR(16),Credit SMALLINT,Ctime,SMALLINT,Quota INT,);,选课,CREATE TABLE,studCourse,(,Sno,CHAR(8),CONSTRAINT FK_SC_S REFERENCES students(,Sno,),Cno,CHAR(8),CONSTRAINT FK_SC_C REFERENCES courses(,Cno,),Grade SMALLINT,CONSTRAINT Tab_SC PRIMARY KEY (,Sno,Cno,),);,系统的软件结构设计,根据数据流图分析,现采用结构图来描述本系统的软件结构,系统主要由四个模块组成。,学生信息查询模块,主界面模块,学生选课模块,教务信息维护模块,主界面模块,:提供教务管理系统的主界面,本系统的唯一入口和出口。该界面提供用户选择并调用各子模块,对于进入教务员管理功能还要核对用户名和口令,系统的软件结构设计,学生信息查询模块,:提供学生信息查询界面,用户可以选择一个系,该模块查询并显示该系的学生信息,并统计该系总学生数,教务信息维护模块,:该模块允许用户先选择一个维护对象(如课程),然后进行维护工作(增、删、改),该界面还提供一般的信息浏览,学生选课模块,:提供选课界面,每个学生进入该界面后,先输入自己的学号,该模块会检查学号合法性,如果正确,则显示出该生的选课表等有关信息。该界面允许学生查询课程,并进行选课、退课等操作。该模块对选课过程进行一系列必要的检查,如出现课程已选、授课时间冲突、没有名额等情况时,都会给出错误信息,系统的详细设计与编码,此系统开发语言采用Visual Basic 6,RDBMS采用ACCESS 2000。数据库访问接口采用ADO (ActiveX Data Objects)。,在具体进行系统的开发时,用到的库(DLL)有Microsoft ActiveX Data Objects 2.7 Library (msado15.dll)。,使用的主要组件(component)有Microsoft ADO Data Control 6.0(OLEDB) (MSADODC.OCX)、Microsoft DataGrid Control 6.0(OLEDB) (MSDATGRD.OCX)、Microsoft Hierarchical FlexGrid Control 6.0 (OLEDB) (MSHFLXGD.OCX)。,注意:测试此系统时,请将数据库文件(EAS.mdb)和执行文件(教务管理系统.exe)拷贝到目录D:制造信息技术讲义 中。,1. 连接数据库(Module1.bas),使用两个全局变量:Global,GlobalConn,As ADODB.Connection,Global,GlobalRS,As ADODB.Recordset,一个函数:,Public Function,ConnectDB(),As Integer,Set GlobalConn = New ADODB.Connection,GlobalConn.CursorLocation = adUseClient,GlobalConn.Open Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:制造信息技术讲义EAS.mdb;Persist Security Info=False,Set GlobalRS = New ADODB.Recordset,ConnectDB = 0,End Function,程序入口:Sub Main(),Set fMainForm = New frmMain,fMainForm.Show,Call ConnectDB,End Sub,系统的详细设计与编码,系统的详细设计与编码,2. 主界面(frmMain.frm),进入子模块的程序入口:例如进入“查询系和学生信息”的程序如下,,Private Sub Command1_Click(),Dim fLogin As New frmLogin,fLogin.Show vbModal,If Not fLogin.OK Then,Exit Sub,End If,Unload fLogin,Load frmDeptStud,frmDeptStud.Show vbModal, Me,End Sub,退出系统时,要断开数据库的连接,释放全局变量占用的存储空间:,If Not GlobalRS.State = adStateClosed Then GlobalRS.Close,Set GlobalRS = Nothing,If Not GlobalConn.State = adStateClosed Then GlobalConn.Close,Set GlobalConn = Nothing,系统的详细设计与编码,3. 帐户及口令检验界面(frmLogin.frm),若检验通过,此窗体的私有变量(模块级变量)OK的值为True,否则为False 。,使用如下语句打开记录集:,GlobalRS.Open sqlString, GlobalConn, adOpenForwar
展开阅读全文