数据库原理与SQLServer2005应用教程苏州大学计算机科学与技术学院第五章数据库设计5.1数据库设计概述5.2需求分析5.3概念结构设计5.4逻辑结构设计5.5物理结构设计5.6数据库实施和维护5.1数据库设计概述5.1.1数据库设计的任务5.1.2数据库设计的特点5.1.3数据库设计方法5.1.4数据库设计的基本步骤5.1.1数据库设计的任务数据库设计是指对于一个给定的应用环境,构造最优的数据库模式,建立数据库及其应用系统,使之能够有效地存储数据,满足各种用户的信息要求和处理要求。也就是把现实世界中的数据,根据各种应用要求,加以合理地组织,满足硬件和操作系统的特性,利用已有的DBMS来建立能够实现系统目标的数据库和应用系统。数据库设计信息需求处理需求数据库应用程序DBMS硬件和操作系统特性图5.1数据库设计的任务5.1.2数据库设计的特点数据库建设的基本规律三分技术,七分管理,十二分基础数据管理数据库建设项目管理企业(即应用部门)的业务管理基础数据收集、入库更新新的数据结构(数据)设计和行为(处理)设计相结合将数据库结构设计和数据处理设计密切结合数据库设计应该与应用系统设计相结合结构(数据)设计数据库的结构设计是指根据给定的应用环境,进行数据库的模式或子模式等的设计它包括数据库的概念结构设计、逻辑结构设计和物理结构设计。行为(处理)设计指用户对数据库的操作,这些要通过应用程序来实现,所以数据库的行为设计就是应用程序的设计。数据库设计的特点(续)现实世界数据分析用户业务活动分析概念设计功能模型逻辑设计事务设计物理设计程序说明子模式设计应用程序设计加载试验数据程序编码调试性能考核满意?是否加载数据库运行和维护结构和行为分离的设计5.1.3数据库设计方法数据库设计方法可分为:手工试凑法、规范设计法、计算机辅助设计法。手工试凑法是最早使用的数据库设计方法。这种方法依赖于设计者的经验和技巧,缺乏科学理论和工程原则的支持,设计的质量很难保证,常常是数据库运行一段时间后又发现各种问题,这样再重新进行修改,增加了系统维护的代价。因此这种方法越来越不适应发展的需要。数据库设计方法(续)为了改变这种情况,1978年10月,来自三十多个国家的数据库专家在美国新奥尔良(NewOrleans)市专门讨论了数据库设计问题,他们运用软件工程的思想和方法,提出了数据库设计的规范,这就是著名的新奥尔良法,它是目前公认的比较完整和权威的一种规范设计法。新奥尔良法将数据库设计分成需求分析(分析用户需求)、概念设计(信息分析和定义)、逻辑设计(设计实现)和物理设计(物理数据库设计)。目前,常用的规范设计方法大多起源于新奥尔良法,并在设计的每一阶段采用一些辅助方法来具体实现。下面简单介绍几种常用的规范设计方法。数据库设计方法(续)1.基于E-R模型的数据库设计方法基于E-R模型的数据库设计方法是由P.P.S.chen于1976年提出的数据库设计方法其基本思想是在需求分析的基础上,用E-R(实体—联系)图构造一个反映现实世界实体之间联系的概念模型然后再将此概念模型转换成基于某一特定的DBMS的数据模型。2.基于3NF的数据库设计方法基于3NF的数据库设计方法是由S·Atre提出的结构化设计方法其基本思想是在需求分析的基础上,确定数据库模式中的全部属性和属性间的依赖关系,将它们组织在一个单一的关系模式中然后再分析模式中不符合3NF的约束条件,将其进行投影分解,规范成若干个3NF关系模式的集合。除了以上两种方法外,规范化设计方法还有基于视图的数据库设计方法、实体分析法、属性分析法和基于抽象语义的设计方法等,这里不再详细介绍。规范设计法从本质上来说仍然是手工设计方法,其基本思想是过程迭代和逐步求精。数据库设计方法简述(续)计算机辅助设计法是指在数据库设计的某些过程中模拟某一规范化设计的方法,并以人的知识或经验为主导,通过人机交互方式实现设计中的某些部分。目前许多计算机辅助软件工程(ComputerAidedSoftwareEngineering,CASE)工具可以自动或辅助设计人员完成数据库设计过程中的很多任务。比如SYSBASE公司的PowerDesigner和Oracle公司的Designer2000。5.1.4数据库设计的基本步骤按照规范设计法,考虑数据库及其应用系统开发全过程,可将数据库设计分为以下六个阶段:需求分析阶段概念结构设计阶级逻辑结构设计阶段物理结构设计阶段数据库实施阶段数据库运行和维护阶段需求分析和概念设计独立于任何数据库管理系统逻辑设计和物理设计与选用的DBMS密切相关YYNN需求分析阶段应用需求(数据、处理)需求收集和分析概念模型设计转换规则,规范化理论逻辑模型设计用户应用要求、DBMS特征物理模型设计性能评价与预测符合要求?物理实现试运行满意?使用与维护概念设计阶段逻辑设计阶段物理设计阶段数据库实阶施段数据库运行维护阶段一、数据库设计的准备工作:选定参加设计的人1.系统分析人员、数据库设计人员自始至终参与数据库设计2.用户和数据库管理员主要参加需求分析和数据库的运行维护3.应用开发人员(程序员和操作员)在系统实施阶段参与进来,负责编制程序和准备软硬件环境数据库设计的基本步骤(续)需求分析阶段分析用户数据需求与处理需求。概念设计阶段对用户需求进行综合、归纳与抽象,形成独立于具体DBMS的概念模型(E-R图)数据库设计的基本步骤(续)逻辑设计阶段首先将E-R图转换成具体的DBMS支持的数据模型,如关系模型,形成数据库逻辑模式然后根据用户处理的要求、安全性的考虑,在基本表的基础上再建立必要的视图(View),形成数据的外模式物理结构设计阶段为逻辑数据模型选取一个最适合应用环境的物理结构(包括存储结构和存取方法)数据库设计的基本步骤(续)数据库实施阶段设计人员运用DBMS提供的数据语言及宿主语言,根据逻辑设计和物理设计的结果建立数据库编制与调试应用程序组织数据入库并进行试运行数据库设计的基本步骤(续)数据库运行与维护阶段数据库应用系统经过试运行后即可投入正式运行,在数据库系统运行过程中不断进行评价、调整、修改等维护工作。整个设计步骤既是数据库设计的过程,也包括数据库应用系统的设计过程在设计过程中将数据设计与处理设计紧密结合起来,将这两个方面的需求分析、抽象、设计、实现在各个阶段同时进行,相互参照,相互补充。数据库设计各个阶段的设计描述数据库设计过程中的各级模式数据库设计不同阶段形成的数据库各级模式数据库的各级模式第五章数据库设计5.1数据库设计概述5.2需求分析5.3概念结构设计5.4逻辑结构设计5.5物理结构设计5.6数据库实施和维护5.2需求分析5.2.1需求分析的任务5.2.2需求分析的方法需求分析(续)需求分析就是分析用户的需要与要求需求分析是设计数据库的起点需求分析的结果是否准确地反映了用户的实际要求,将直接影响到后面各个阶段的设计,并影响到设计结果是否合理和实用需求分析的任务详细调查现实世界要处理的对象(组织、部门、企业等)充分了解原系统(手工系统或计算机系统)明确用户的各种需求确定新系统的功能充分考虑今后可能的扩充和改变需求分析的重点调查的重点是“数据”和“处理”,获得用户对数据库要求信息要求处理要求安全性与完整性要求需求分析的难点确定用户最终需求用户缺少计算机知识设计人员缺少用户的专业知识解决方法设计人员必须不断深入地与用户进行交流需求分析的小结设计人员应充分考虑到可能的扩充和改变,使设计易于更改,系统易于扩充必须强调用户的参与概念结构什么是概念结构设计将需求分析得到的用户需求抽象为信息结构即概念模型的过程就是概念结构设计概念结构是各种数据模型的共同基础,它比数据模型更独立于机器、更抽象,从而更加稳定概念结构设计是整个数据库设计的关键概念结构(续)现实世界机器世界信息世界需求分析概念结构设计概念结构(续)概念结构设计的特点(1)能真实、充分地反映现实世界(2)易于理解(3)易于更改(4)易于向关系、网状、层次等各种数据模型转换概念结构(续)描述概念模型的工具E-R模型7.3.2概念结构设计的方法与步骤设计概念结构的四类方法自顶向下首先定义全局概念结构的框架,然后逐步细化自顶向下策略概念结构设计的方法与步骤自底向上首先定义各局部应用的概念结构,然后将它们集成起来,得到全局概念结构自底向上策略概念结构设计的方法与步骤(续)逐步扩张首先定义最重要的核心概念结构,然后向外扩充,以滚雪球的方式逐步生成其他概念结构,直至总体概念结构逐步扩张策略概念结构设计的方法与步骤(续)混合策略将自顶向下和自底向上相结合,用自顶向下策略设计一个全局概念结构的框架,以它为骨架集成由自底向上策略中设计的各局部概念结构。概念结构设计的方法与步骤(续)常用策略自顶向下地进行需求分析自底向上地设计概念结构概念结构设计的方法与步骤(续)自底向上设计概念结构的步骤第1步:抽象数据并设计局部视图第2步:集成局部视图,得到全局概念结构数据抽象抽象是对实际的人、物、事和概念中抽取所关心的共同特性,忽略非本质的细节,并把这些特性用各种概念精确地加以描述。概念结构是对现实世界的一种抽象数据抽象的用途对需求分析阶段收集到的数据进行分类、聚集后,形成实体实体的属性,标识实体的码确定实体之间的联系类型(1:1,1:n,m:n)设计分E-R图的步骤:选择局部应用逐一设计分E-R图⒈选择局部应用需求分析阶段,已用多层数据流图和数据字典描述了整个系统。设计分E-R图首先需要根据系统的具体情况,在多层的数据流图中选择一个适当层次的数据流图,让这组图中每一部分对应一个局部应用,然后以这一层次的数据流图为出发点,设计分E-R图。选择局部应用(续)设计分E-R图的出发点⒉逐一设计分E-R图任务将各局部应用涉及的数据分别从数据字典中抽取出来参照数据流图,标定各局部应用中的实体、实体的属性、标识实体的码确定实体之间的联系及其类型(1:1,1:n,m:n)逐一设计分E-R图(续)两条准则:(1)属性不能再具有需要描述的性质。即属性必须是不可分的数据项,不能再由另一些属性组成(2)属性不能与其他实体具有联系。联系只发生在实体之间逐一设计分E-R图(续)职称作为一个实体逐一设计分E-R图(续)病房作为一个实体逐一设计分E-R图(续)仓库作为一个实体逐一设计分E-R图(续)[实例]销售管理子系统分E-R图的设计销售管理子系统的主要功能:1.处理顾客和销售员送来的订单2.工厂是根据订货安排生产的3.交出货物同时开出发票4.收到顾客付款后,根据发票存根和信贷情况进行应收款处理逐一设计分E-R图(续)下图是第一层数据流图,虚线部分划出了系统边界图7.18销售管理子系统第一层数据流图逐一设计分E-R图(续)上图中把系统功能又分为4个子系统,下面四个图是第二层数据流图图7.19接收订单逐一设计分E-R图(续)图7.20处理订单逐一设计分E-R图(续)图7.21开发票逐一设计分E-R图(续)图7.22支付过账逐一设计分E-R图(续)分E-R图的框架逐一设计分E-R图(续)参照第二层数据流图和数据字典,遵循两个准则,进行如下调整:(1)订单与订单细节是1∶n的联系(2)原订单和产品的联系实际上是订单细节和产品的联系。(3)图7.21中“发票主清单”是一个数据存储,不必作为实体加入分E-R图(4)工厂对大宗订货给予优惠逐一设计分E-R图(续)得到分E-R图如下图所示销售管理子系统的分E-R图逐一设计分E-R图(续)对每个实体定义的属性如下:顾客:{顾客号,顾客名,地址,电话,信贷状况,账目余额}订单:{订单号,顾客号,订货项数,订货日期,交货日期,工种号,生产地点}订单细则:{订单号,细则号,零件号,订货数,金额}应收账款:{顾客号,订单号,发票号