为什么需要设计数据库?修建茅屋需要设计吗?修建大厦需要设计吗?结论:当数据库比较复杂时我们需要设计数据库为什么需要设计数据库?良好的数据库设计:节省数据的存储空间能够保证数据的完整性方便进行数据库应用系统的开发糟糕的数据库设计:数据冗余、存储空间浪费内存空间浪费数据更新和插入的异常什么是数据库设计数据库设计是指对于一个给定的应用环境,构造(设计)优化的数据库逻辑模式和物理结构,并据此建立数据库及其应用系统,使之能够有效地存储和管理数据,满足各种用户的应用需求,包括信息管理要求和数据操作要求。目标:为用户和各种应用系统提供一个信息基础设施和高效率的运行环境数据库设计专业人员应具备哪些知识?数据库的基本知识和数据库设计技术计算机科学的基础知识和程序设计的方法和技巧软件工程的原理和方法应用领域的知识数据库设计方法手工试凑法设计质量与设计人员的经验和水平有直接关系缺乏科学理论和工程方法的支持,工程的质量难以保证数据库运行一段时间后常常又不同程度地发现各种问题,增加了维护代价数据库设计方法规范设计法手工设计方法基本思想:过程迭代和逐步求精典型方法○新奥尔良(NewOrleans)方法将数据库设计分为四个阶段○基于E-R模型的数据库设计方法概念设计阶段广泛采用○3NF(第三范式)的设计方法逻辑阶段可采用的有效方法○ODL(ObjectDefinitionLanguage)方法面向对象的数据库设计方法计算机辅助设计ORACLEDesigner2000SYBASEPowerDesigner良构设计的目标数据库支持设定的和实时的信息提取。数据库必须存储必要的信息,支持在设计时确定的信息需求,并支持用户可能提出的实时查询。表应当正确、有效地构造。数据库中的每个表都代表一个主题,由一些相关的字段组成,数据的冗余度尽可能小,并且在整个数据库中通过一个具有唯一值的字段表示。数据的完整性强加在字段、表和关系级。这些完整性帮助确保数据结构和它们的值始终是有效的和正确的。数据库支持与组织机构有关的业务规则。数据必须提供合法和正确的信息,这些信息对于企业总是有意义的。数据库支持未来的增长。随着企业的信息需求的变化和增长,数据库的结构应当易于修改和扩充。开发周期现实世界建模信息世界数据库世界模型转换规范化需求分析阶段:分析客户的业务和数据处理需求;概要设计阶段:设计数据库的E-R模型图,确认需求信息的正确和完整;详细设计阶段:将E-R图转换为多张表,进行逻辑设计,并应用数据库设计的三大范式进行审核;代码编写阶段:选择具体数据库进行物理实现;软件测试阶段:……安装部署:……数据库设计的基本步骤数据库设计分6个阶段需求分析概念结构设计逻辑结构设计物理结构设计数据库实施数据库运行和维护需求分析和概念设计独立于任何数据库管理系统逻辑设计和物理设计与选用的DBMS密切相关数据库设计准备工作准备工作:选定参加设计的人1.数据库分析设计人员数据库设计的核心人员自始至终参与数据库设计其水平决定了数据库系统的质量2.用户在数据库设计中也是举足轻重的主要参加需求分析和数据库的运行维护用户积极参与带来的好处○加速数据库设计○提高数据库设计的质量3.程序员在系统实施阶段参与进来,负责编制程序4.操作员在系统实施阶段参与进来,准备软硬件环境需求分析阶段1.准确了解与分析用户需求(包括数据与处理)2.是整个设计过程的基础,是最困难、最耗费时间的一步概念结构设计阶段1.是整个数据库设计的关键2.通过对用户需求进行综合、归纳与抽象,形成一个独立于具体DBMS的概念模型逻辑结构设计阶段1.将概念结构转换为某个DBMS所支持的数据模型2.对其进行优化数据库物理设计阶段为逻辑数据模型选取一个最适合应用环境的物理结构(包括存储结构和存取方法)数据库实施阶段运用DBMS提供的数据语言、工具及宿主语言,根据逻辑设计和物理设计的结果1.建立数据库2.编制与调试应用程序3.组织数据入库4.并进行试运行需求分析-任务需求分析就是分析用户的需要与要求需求分析是设计数据库的起点需求分析的结果是否准确地反映了用户的实际要求,将直接影响到后面各个阶段的设计,并影响到设计结果是否合理和实用需求分析的任务通过详细调查现实世界要处理的对象(组织、部门、企业等),充分了解原系统(手工系统或计算机系统)工作概况,明确用户的各种需求,在此基础上确定新系统的功能。新系统必须充分考虑今后可能的扩充和改变,不能仅仅按当前应用需求来设计数据库。需求分析-重点调查的重点是“数据”和“处理”,获得用户对数据库要求信息要求处理要求安全性与完整性要求需求分析-难点确定用户最终需求用户缺少计算机知识设计人员缺少用户的专业知识解决方法设计人员必须不断深入地与用户进行交流需求分析-方法调查清楚用户的实际需求并进行初步分析与用户达成共识进一步分析与表达这些需求需求分析-调查步骤⑴调查组织机构情况⑵调查各部门的业务活动情况。(调查重点之一)⑶在熟悉业务活动的基础上,协助用户明确对新系统的各种要求。(调查重点之二)⑷确定新系统的边界需求分析-调查方法做需求调查时,往往需要同时采用多种方法无论使用何种调查方法,都必须有用户的积极参与和配合设计人员应该和用户取得共同的语言,帮助不熟悉计算机的用户建立数据库环境下的共同概念,并对设计工作的最后结果共同承担责任常用调查方法⑴跟班作业⑵开调查会⑶请专人介绍⑷询问⑸设计调查表请用户填写⑹查阅记录需求分析-分析方法分析和表达用户的需求的常用方法自顶向下的结构化分析方法(StructuredAnalysis,简称SA方法)SA方法从最上层的系统组织机构入手,采用自顶向下、逐层分解的方式分析系统,并用数据流图和数据字典描述系统。需求分析-分析方法-DFD1.首先把任何一个系统都抽象为:2.分解处理功能和数据(1)分解处理功能○将处理功能的具体内容分解为若干子功能,再将每个子功能继续分解,直到把系统的工作过程表达清楚为止。(2)分解数据○在处理功能逐步分解的同时,其所用的数据也逐级分解,形成若干层次的数据流图(3)表达方法○处理逻辑:用判定表或判定树来描述○数据:用数据字典来描述3.将分析结果再次提交给用户,征得用户的认可信息要求处理要求需求分析-分析方法-DFD举例需求分析-分析方法-数据字典数据字典的用途是各类数据描述的集合进行详细的数据收集和数据分析所获得的主要结果数据字典的内容数据项数据结构数据流数据存储处理过程需求分析-分析方法-数据字典各项的描述:数据项描述={数据项名,数据项含义说明,别名,数据类型,长度,取值范围,取值含义,与其它数据项的逻辑关系,数据项之间的联系}数据结构描述={数据结构名,含义说明,组成:{数据项或数据结构}}数据流描述={数据流名,说明,数据流来源,数据流去向,组成:{数据结构},平均流量,高峰期流量}数据存储描述={数据存储名,说明,编号,输入的数据流,输出的数据流,组成:{数据结构},数据量,存取频度,存取方式}处理过程描述={处理过程名,说明,输入:{数据流},输出:{数据流},处理:{简要说明}}数据依赖数据完整性约束数据完整性约束需求分析-分析方法-数据字典例:学生学籍管理子系统的数据字典。数据项,以“学号”为例:数据项名:学号含义说明:唯一标识每个学生别名:学生编号类型:字符型长度:8取值范围:00000000至99999999取值含义:前两位标别该学生所在年级,后六位按顺序编号与其他数据项的逻辑关系:需求分析-分析方法-数据字典例:学生学籍管理子系统的数据字典。数据结构,以“学生”为例“学生”是该系统中的一个核心数据结构:数据结构:学生含义说明:是学籍管理子系统的主体数据结构,定义了一个学生的有关信息组成:学号,姓名,性别,年龄,所在系,年级需求分析-分析方法-数据字典例:学生学籍管理子系统的数据字典。数据流,“体检结果”可如下描述:数据流:体检结果说明:学生参加体格检查的最终结果数据流来源:体检数据流去向:批准组成:……平均流量:……高峰期流量:……需求分析-分析方法-数据字典例:学生学籍管理子系统的数据字典。数据存储,“学生登记表”可如下描述:数据存储:学生登记表说明:记录学生的基本情况流入数据流:……流出数据流:……组成:……数据量:每年3000张存取方式:随机存取需求分析-分析方法-数据字典例:学生学籍管理子系统的数据字典。处理过程,“分配宿舍”可如下描述:处理过程:分配宿舍说明:为所有新生分配学生宿舍输入:学生,宿舍输出:宿舍安排处理:在新生报到后,为所有新生分配学生宿舍。要求同一间宿舍只能安排同一性别的学生,同一个学生只能安排在一个宿舍中。每个学生的居住面积不小于3平方米。安排新生宿舍其处理时间应不超过15分钟需求分析-分析方法-数据字典数据字典是关于数据库中数据的描述,是元数据,而不是数据本身数据字典在需求分析阶段建立,在数据库设计过程中不断修改、充实、完善需求分析-小结设计人员应充分考虑到可能的扩充和改变,使设计易于更改,系统易于扩充必须强调用户的参与概念结构设计需求分析阶段描述的用户应用需求是现实世界的具体需求将需求分析得到的用户需求抽象为信息结构即概念模型的过程就是概念结构设计概念结构是各种数据模型的共同基础,它比数据模型更独立于机器、更抽象,从而更加稳定。概念结构设计是整个数据库设计的关键现实世界机器世界信息世界需求分析概念结构设计概念结构设计概念结构设计的特点能真实、充分地反映现实世界易于理解易于更改易于向关系、网状、层次等各种数据模型转换描述概念模型的工具E-R模型概念结构设计-方法设计概念结构的四类方法自顶向下首先定义全局概念结构的框架,然后逐步细化概念结构设计-方法自底向上首先定义各局部应用的概念结构,然后将它们集成起来,得到全局概念结构概念结构设计-方法逐步扩张首先定义最重要的核心概念结构,然后向外扩充,以滚雪球的方式逐步生成其他概念结构,直至总体概念结构概念结构设计-方法混合策略将自顶向下和自底向上相结合,用自顶向下策略设计一个全局概念结构的框架,以它为骨架集成由自底向上策略中设计的各局部概念结构。概念结构设计-方法常用策略自顶向下地进行需求分析自底向上地设计概念结构概念结构设计-方法自底向上设计概念结构的步骤第1步:抽象数据并设计局部视图第2步:集成局部视图,得到全局概念结构概念结构设计-数据抽象与局部视图数据抽象抽象是对实际的人、物、事和概念中抽取所关心的共同特性,忽略非本质的细节,并把这些特性用各种概念精确地加以描述。概念结构是对现实世界的一种抽象。三类抽象分类聚集概括概念结构设计-数据抽象与局部视图分类将一类具有共同特性和行为的对象定义为一种某类型,在E-R模型中的实体型就是这种抽象,如学生,课程抽象了对象的值和型之间“ismemberof”语义学生“ismemberof”张英王平赵斌实体型课程“ismemberof”C语言数据库操作系统实体型概念结构设计-数据抽象与局部视图聚集定义某类型的组成成分,对应E-R模型中实体的属性抽象了对象类型和其成分之间的“ispartof”语义学生学号姓名专业班级仓库号面积主任仓库姓名年龄性别工资“ispartof”实体型属性概念结构设计-数据抽象与局部视图概括定义类型之间的子集联系,形成超(父)类、子类抽象了类型之间“issubsetof”语义概括的重要性质:继承,即子类集成超类的所有抽象是E-R模型的抽象机制的扩充学生本科生研究生概括的E-R表示“issubsetof”超类子类学号,姓名,性别,年龄专业,综合排名导师,研究方向概念结构设计-第一步利用抽象机制,对需求分析阶段收集到的数据进行分类、组织(聚集)形成实体,实体的属性,标识实体的码,确定实体间的联系类型设计局部E-R图