本章内容提要
设计一个数据库应用系统需要经历六个阶段:
需求分析概念设计逻辑结构设计物理设计实施运行维护
设计过程中往往还会有许多反复 。
第六章 数据库设计本章重点:
数据库设计的方法和步骤概念结构的设计逻辑结构的设计本章难点:
概念结构的设计逻辑结构的设计第六章 数据库设计
数据库设计是研制数据库及其应用系统的技术,是数据库在应用领域中主要的研究课题。
数据库设计 是指对于一个给定的应用环境,构造最优的数据库模式,建立数据库极其应用系统,有效存储数据,满足用户信息要求和处理要求。
数据库设计通常是在一个通用的DBMS支持下进行的,即利用现成的DBMS为基础。
在数据库领域内,常常把使用数据库的各类系统统称为 数据库应用系统 (DBAS)。
第六章 数据库设计
6.1 数据库设计概述
6.1.1 数据库和信息系统
从使用者角度看,信息系统 是提供信息,辅助人们对环境进行控制和进行决策的系统。 数据库 是信息系统的核心和基础。
一个信息系统的各个部分能否紧密的结合在一起以及如何结合,关键在数据库。
只有对数据库进行合理的逻辑设计和有效的物理设计才能开发出完善而高效的信息系统。数据库设计是信息系统开发和建设的重要组成部分。
大型数据库的设计是一项庞大的工程,属于软件工程范畴。必须把软件工程的原理和方法应用到数据库建设中来。
第六章 数据库设计
6.1 数据库设计概述在数据库设计开始之前,首先要选定参加设计的人员,包括系统分析人员、数据库设计人员、系统开发人员和部分用户代表。其中分析和设计人员是数据库设计的核心人员,
他们将自始至终参与数据库设计,他们的水平一定程度上决定了数据库系统的质量。
第六章 数据库设计
6.1 数据库设计概述用户在数据库设计中也是举足轻重的,他们主要参加需求分析和数据库的运行维护,他们的积极参与(不仅仅是配合)不但能加速数据库设计,而且也是决定数据库设计质量的重要因素。系统开发人员(包括程序员和操作员)则在系统实施阶段参与进来,分别负责建立数据库、编制程序和准备软硬件环境。
第六章 数据库设计
6.1 数据库设计概述第六章 数据库设计
6.1 数据库设计概述
从事数据库设计的人员来讲,主要应该具备以下的技术和知识:
( 1) 计算机科学基础知识和程序设计技术
( 2) 数据库基本知识和数据库设计技术
( 3) 软件工程的原理和方法
( 4) 应用领域的知识
6.1.2 数据库设计的特点
( 1)数据库建设是硬件、软件和干件的结合数据库设计既是一项涉及多学科的综合性技术又是一项庞大的工程项目。,三分技术、
七分管理、十二分基础数据”是数据库建设的基本规律。技术和管理的界面(称之为
“干件”)十分重要。
第六章 数据库设计
6.1 数据库设计概述
( 2)设计过程中是结构(数据)设计和行为
(处理)设计的密切结合数据库设计应该和应用系统设计相结合。也就是说,整个设计过程中要把结构(数据)
设计和行为(处理)设计密切结合起来。
第六章 数据库设计
6.1 数据库设计概述第六章 数据库设计
6.1 数据库设计概述结构和行为分离的设计
6.1.3 数据库设计的困难
懂得计算机知识与数据库设计的人员一般都缺乏对应用对象的业务知识的了解和实际经验。
数据库系统目标是什么往往并不明确,因此,
应用对象的需求是什么也难以明确
缺乏完善的设计工具和方法
应用对象千差万别,难以找到一种适合所有应用对象的工具和方法第六章 数据库设计
6.1 数据库设计概述
6.1.4 数据库设计方法简述
手工试凑法。
规范设计法,主要有:
新奥尔良 ( New Orleans) 方法 。
基于E-R模型的数据库设计方法基于3NF ( 第三模式 ) 的设计方法规范设计从本质上看仍然是手工设计方法,其基本思想是过程迭代和逐步求精 。
从目前技术条件来看,按照一定的设计规程,用工程化方法设计数据库是最实用的方法。
第六章 数据库设计
6.1 数据库设计概述第六章 数据库设计
6.1 数据库设计概述
6.1.5 数据库设计步骤 ( P206图 6.2)
按规范设计的方法将数据库设计分为以下六个阶段:
需求分析概念结构设计逻辑结构设计数据库物理设计数据库实现数据库运行和维护
设计过程中往往还会有许多反复
这个设计步骤是从数据库应用系统设计和开发的全过程来考察数据库设计的问题。因此,它既是数据库也是应用系统的设计过程。
第六章 数据库设计
6.1 数据库设计概述
⒈ 需求分析阶段
需求收集和分析,结果得到 数据字典描述的数据需求 (和数据流图描述的处理需求)。
⒉概念结构设计阶段
通过对用户需求进行综合、归纳与抽象,形成一个独立于具体 DBMS的 概念模型,可以 用 E-R图表示 。
第六章 数据库设计
6.1 数据库设计概述
⒊ 逻辑结构设计阶段
将概念结构转换为某个 DBMS所支持的 数据模型
(例如关系模型),并对其进行优化。
⒋数据库物理设计阶段
为逻辑数据模型选取一个最适合应用环境的物理结构(包括存储结构和存取方法)。
第六章 数据库设计
6.1 数据库设计概述
⒌ 数据库实施阶段
运用 DBMS提供的数据语言及其宿主语言,根据逻辑设计和物理设计的结果建立数据库,编制与调试应用程序,组织数据入库,并进行试运行。
⒍数据库运行和维护阶段
数据库应用系统经过试运行后即可投入正式运行。在数据库系统运行过程中必须不断地对其进行评价、调整与修改。
第六章 数据库设计
6.1 数据库设计概述应用要求应用要求应用要求应用要求概念模式逻辑模式外模式 外模式 外模式综合
按照这样的设计过程,数据库结构设计的不同阶段形成了数据库的各级模式( P209 图 6.4)
第六章 数据库设计
6.2 需求分析
需求分析是数据库设计的起点,也是数据库应用系统设计的起点。我们要特别强调需求分析的重要性,因为设计人员往往忽视或不善于进行需求分析。而需求分析是否详细、正确,将直接影响后面各个阶段,并影响到设计结果是否合理和实用。许多数据库应用系统开发周期一再延误,甚至开发项目最终失败,纠其原因主要是需求分析工作没有到位。
第六章 数据库设计
6.2 需求分析
6.2.1需求分析的任务
需求分析简单的说就是分析用户的要求。
需求分析的任务是调查应用领域,对应用领域中各应用的信息要求和操作要求进行详细分析,形成需求分析说明书。
第六章 数据库设计
6.2 需求分析
1,需求分析的任务需求分析的任务是:
通过详细调查现实世界要处理的对象
(组织、部门、企业等),充分了解原系统(手工系统或计算机系统)工作概况,明确用户的各种需求,然后在此基础上确定新系统的功能。
第六章 数据库设计
6.2 需求分析
2,需求分析的重点
需求分析的重点是调查、收集与分析用户在数据管理中的要求,包括:
( 1)信息要求,信息的内容、性质
( 2)处理要求:处理功能、处理方式,响应时间
( 3)安全性与完整性要求
需求分析调查的重点是:
( 1)数据
( 2)处理第六章 数据库设计
6.2 需求分析
3,需求分析的方法需求分析:
( 1)调查清楚用户的实际要求;
( 2)与用户达成共识;
( 3)分析与表达这些需求第六章 数据库设计
6.2 需求分析调查用户需求的具体步骤:
⑴ 调查组织机构情况
⑵ 调查各部门的业务活动情况
⑶ 协助用户明确对新系统的各种要求(分析用户需求)
⑷ 确定新系统的边界第六章 数据库设计
6.2 需求分析常用的调查方法有:
⑴跟班作业
⑵开调查会
⑶请专人介绍。
⑷询问
⑸设计调查表请用户填写
⑹查阅记录第六章 数据库设计
6.2 需求分析
4,分析和表达用户的需求:
( 1)管理业务的调查分析 ——管理业务流程图
( 2)数据流程的调查分析 ——数据流程图第六章 数据库设计
6.2 需求分析图 6.6 需求分析过程第六章 数据库设计
6.2 需求分析
6.2.3 数据字典
数据字典是各类数据描述的集合。
数据字典是对数据流图的补充说明
数据字典是关于数据库中数据的描述,而不是数据本身。它为设计人员和数据库管理员在数据库设计、实现和运行阶段控制有关数据提供依据。
数据字典通常包括:
⒈数据项
⒉数据结构
⒊数据流
⒋数据存储
⒌处理过程第六章 数据库设计
6.2 需求分析
⒈ 数据项
数据项是不可再分的数据单位。
对数据项的描述通常包括以下内容:
数据项描述={数据项名,数据项含义说明,
别名,数据类型,长度,取值范围,取值含义,与其他数据项的逻辑关系}
其中取值范围、与其他数据项的逻辑关系定义了数据的完整性约束条件,是设计数据检验功能的依据。
第六章 数据库设计
6.2 需求分析例:学生学籍管理子系统,数据字典的定义(示例)。
,学号”数据项可以如下描述:
数据项,学号含义说明:唯一标识每个学生别名,学生编号类型,字符型长度,8
取值范围,00000000至 99999999
取值含义:前两位标明该学生所在年级,后六位按顺序编号与其他数据项的逻辑关系:
第六章 数据库设计
6.2 需求分析
⒉ 数据结构
数据结构反映了数据之间的组合关系。
一个数据结构可以由若干个数据项组成,也可以由若干个数据结构组成,或由若干个数据项和数据结构混合组成。
对数据结构的描述通常包括以下内容:
数据结构描述={数据结构名,含义说明,组成,{数据项或数据结构}}
第六章 数据库设计
6.2 需求分析
,学生” 数据结构的描述如下:
数据结构,学生含义说明,是学籍管理子系统的主体数据结构,定义了一个学生的有关信息组成:学号,姓名,性别,年龄,所在系,年级第六章 数据库设计
6.2 需求分析
⒊ 数据流
数据流是数据结构在系统内传输的路径。
对数据流的描述通常包括以下内容:
数据流描述={数据流名,说明,数据流来源,数据流去向,组成,{数据结构},平均流量,高峰期流量}
其中数据流来源是说明该数据流来自哪个过程。数据流去向是说明该数据流将到哪个过程去。平均流量是指在单位时间(每天、
每周、每月等)里的传输次数。高峰期流量则是指在高峰时期的数据流量。
第六章 数据库设计
6.2 需求分析
,体检结果”数据流的描述如下:
数据流,体检结果说明,学生参加体格检查的最终结果数据流来源:体检数据流去向:批准组成,……
平均流量,……
高峰期流量,……
第六章 数据库设计
6.2 需求分析
⒋ 数据存储
数据存储是数据结构停留或保存的地方,也是数据流的来源和去向之一。
对数据存储的描述通常包括以下内容:
数据存储描述={数据存储名,说明,编号,流入的数据流,流出的数据流,组成,{数据结构},数据量,
存取方式}
其中数据量是指每次存取多少数据,每天(或每小时、每周等)存取几次等信息。存取方法包括是批处理,还是联机处理;是检索还是更新;是顺序检索还是随机检索等。另外,流入的数据流要指出其来源,
流出的数据流要指出其去向。
第六章 数据库设计
6.2 需求分析
,学生登记表”数据存储的描述如下:
数据存储,学生登记表说明,记录学生的基本情况流入数据流,……
流出数据流,……
组成,……
数据量,每年 3000张存取方式,随机存取第六章 数据库设计
6.2 需求分析
⒌ 处理过程
数据字典中只需要描述处理过程的说明性信息,
通常包括以下内容:
处理过程描述={处理过程名,说明,输入,{数据流},输出,{数据流},处理,{简要说明}}
其中简要说明中主要说明该处理过程的功能及处理要求。功能是指该处理过程用来做什么(而不是怎么做),处理要求包括处理频度要求,如单位时间里处理多少事务,多少数据量;响应时间要求等。这些处理要求是后面物理设计的输入及性能评价的标准。
第六章 数据库设计
6.2 需求分析
,分配宿舍”处理过程的描述如下:
处理过程:分配宿舍说明,为所有新生分配学生宿舍输入,学生,宿舍,
输出,宿舍安排处理,在新生报到后,为所有新生分配学生宿舍。要求同一间宿舍只能安排同一性别的学生,同一个学生只能安排在一个宿舍中。每个学生的居住面积不小于 3平方米。安排新生宿舍其处理时间应不超过 15分钟。
第六章 数据库设计
6.2 需求分析
6.2.4 需求分析注意点
确定用户需求是一件很困难的事情 。 这是因为:
第一,应用部门的业务人员常常缺少计算机的专业知识,而数据库设计人员又常常缺乏应用领域的业务知识,因此相互的沟通往往比较困难 。
第二,不少业务人员往往对开发计算机系统有不同程度的抵触情绪 。 有的认为需求调查影响了他们的工作,给他们造成了负担,特别是新系统的建设常常伴随企业管理的改革,这会遇到不同部门不同程度的抵触 。
第六章 数据库设计
6.2 需求分析
第三,应用需求常常在不断改变,使系统设计也常常要进行调整甚至要有重大改变。
面对这些困难,设计人员特别应该注意:
1.用户参与的重要性
2,用原型法来帮助用户确定他们的需求
3,预测系统的未来改变第六章 数据库设计
6.3 概念结构设计
将需求分析得到的用户需求 抽象 为信息结构即 概念模型 的过程就是 概念结构设计 。
概念结构是对现实世界的一种抽象,抽取人们关心的共同特性,忽略非本质的细节,并把这些特性用各种概念精确地加以描述。
第六章 数据库设计
6.3 概念结构设计
6.3.1 概念结构
概念结构的特点:
( 1)能够充分反映现实世界,包括实体和实体之间的联系,是现实世界的一个真实模型。
( 2)易于理解,便于和不熟悉计算机的用户交换意见,
使用户易于参与。
( 3)易于更改,当现实世界需求改变时,概念结构又可以很容易地作相应调整。
( 4)易于向关系、网状、层次等各种数据模型转换第六章 数据库设计
6.3 概念结构设计
6.3.2 概念结构设计的方法与步骤
1,概念结构设计的方法
设计概念结构通常有四类方法:
( 1)自顶向下
( 2)自底向上
( 3)逐步扩张
( 4)混合策略
其中最经常采用的策略是自底向上方法 。 即自顶向下地进行需求分析,然后再自底向上地设计概念结构,如图 6.8所示 。
无论采用哪种设计方法,一般都以 E-R模型为工具来描述概念结构。
第六章 数据库设计
6.3 概念结构设计需求需求 1
需求 1,1 需求 1,2
概念模式 1,1 概念模式 1,2
概念模式 1
需求 n
需求 n,1 需求 n,2
概念模式 n,1 概念模式 n,2
概念模式 n
( 应用 1)
全局概念模式
( 应用 n )
需求分析
( 自顶向下 )
概念结构设计
( 自底向上 )
图 6,8 自顶向下需求分析与自底向上设计概念结构第六章 数据库设计
6.3 概念结构设计
以自底向上设计概念结构的方法为例,其 步骤通常分为两步:
( 1)首先要根据需求分析的结果(数据流图、
数据字典等)对现实世界的数据进行抽象,设计各个局部视图即分 E-R图
( 2)集成局部视图第六章 数据库设计
6.3 概念结构设计数据抽象、局部视图的设计视图集成分 E - R 图总 E - R 图需求分析
D F D
DD
返回用户征求意见直到满意为止逻辑结构设计图 6,9 概念结构设计步骤第六章 数据库设计
6.3 概念结构设计
6.3.3 数据抽象与局部视图设计
1.抽象
抽象是对实际的人、物、事和概念的人为处理。
它抽去人们关心的共同特性。忽略非本质的细节,并把这些特性用各种概念精确地加以描述。
这些概念组成了某种模型。
2.抽象的分类
(A)分类 ( Classification )
(B)聚集 ( Aggregation)
(C)概括 ( Generalization)
第六章 数据库设计
6.3 概念结构设计
(A)分类 ( Classification )
定义某一概念作为现实世界中一组对象的类型。这些对象具有某些共同的特性和行为。
它抽象了对象值和型之间的,is member of”的语义。
在 E-R模型中,实体型就是这种抽象 。
学生张颖 刘勇 周圆
Is member of
……王平第六章 数据库设计
6.3 概念结构设计
(B)聚集 ( Aggregation)
定义某一类型的组成部分。
它抽象了对象内部类型和成分之间,is part of”的语义。
在 E-R模型中,若干属性的聚集组成了实体型,就是这种抽象 。
Is part of
学生
……学号 姓名 专业 班级第六章 数据库设计
6.3 概念结构设计
(C)概括 ( Generalization)
定义类型之间的一种子集联系。
它抽象了类型之间的,is subset of”的语义。
概括具有一个很重要的性质:继承性。子类继承超类上定义的所有抽象。子类可以增加自己的某些特殊属性。
学生本科生
Is subset of
…… 研究生第六章 数据库设计
6.3 概念结构设计
概念结构设计的第一步是利用上面介绍的抽象机制对需求分析阶段收集到的数据进行分类、
组织(聚集),形成实体、实体的属性,标识实体的码,确定实体之间的联系类型(
1:1,1:n,n:m),设计分 E-R图。
第六章 数据库设计
6.3 概念结构设计
设计分 E-R图的步骤是:
1,选择局部应用根据系统的具体情况,在多层的数据流图中选择一个适当层次的(经验很重要)数据流图,
让这组图中每一部分对应一个局部应用,我们即可以这一层次的数据流图为出发点,设计分
E-R图。
2,逐一设计分 E-R图对每个局部应用设计分 E-R图。标定局部应用中的实体、实体的属性、标识实体的码,确定实体之间的联系及其类型( 1:1,1:n,m:n)。
第六章 数据库设计
6.3 概念结构设计
设计分 E-R图的步骤是:
3,调整 ——如何划分 实体、属性
调整的 基本准则是:在给定的应用环境中
( 1 ) 作为,属性,,不能再具有需要描述的性质 。 即属性不能是另一些属性的聚集 。
( 2 ) 属性不能与其它实体具有联系,即 E R图中的联系是实体之间的联系 。
注意:
符合上述两条的,事物,一般作为属性来对待 。 能够作为属性的,尽量作为属性对待,目的在于简化 E R图的处置 。
第六章 数据库设计
6.3 概念结构设计图 6.15 职称作为一个实体第六章 数据库设计
6.3 概念结构设计图 6.16 病房作为一个实体第六章 数据库设计
6.3 概念结构设计某工厂管理信息系统物质管理子系统 销售管理子系统 人事管理子系统设计分 E - R
图的出发点
…
图 6,1 7 设计分 E - R 图的出发点例 1,销售管理字系统分 E-R的设计( P220)
第六章 数据库设计
6.3 概念结构设计顾客
1,0
接收订单已批准订单
2,0
处理订单顾客账目状况应收账款产品描述订单细节
3,0
开发票订单记录本包装通知单结算数据主管部门主管部门批准 / 不批准核对订单数据生产部门生产通知单准备发货细节应收账款发票
4,0
支付过账调整未付差额调整
5,0
提供应收账款应收账款报表财务费用变动当前价格订单数据批准 / 不批准图 6,1 8 销售管理子系统第一层数据流图第六章 数据库设计
6.3 概念结构设计
1,1
核对价格产品描述主管部门顾客订单数据已核对价格的订单
1,2
核对账目状况
1,3
批准订单账目状况已核对的订单已批准的订单当前价格应收账款顾客账目状况批准 / 不批准主管部门批准 / 不批准 核对订单数据图 6,1 9 接收订单第六章 数据库设计
6.3 概念结构设计图 6.20 处理订单第六章 数据库设计
6.3 概念结构设计图 6.21 开发票第六章 数据库设计
6.3 概念结构设计图 6.22 支付过账第六章 数据库设计
6.3 概念结构设计
分析数据流图和数据字典,知道整个系统功能围绕了“订单”和“应收账款”
的处理。数据结构中订单、顾客、顾客应收账目用得最多,它们是许多子功能和数据流共享的数据,因此先设计该分 E-
R图的草图(如图 6.23所示)。
第六章 数据库设计
6.3 概念结构设计第六章 数据库设计
6.3 概念结构设计
图中在订单实体与产品实体之间的问号,?,
表示还不能确定这两个实体之间的联系类型 。
然后参照第二层数据流图和数据字典中的详尽描述,遵循前面给出的两个准则,进行如下调整:
第六章 数据库设计
6.3 概念结构设计
( 1)每张订单由订单号、若干头信息和订单细节组成。
订单细节又有订货的零件号、数量等来描述。按照准则( 2),订单细节就不能作订单的属性处理而应该上升为实体。
( 2)一张订单可以订若干产品,所以订单与订单细节两个实体之间是 1∶ n的联系。
( 3)原订单和产品的联系实际上是订单细节和产品的联系。每条订货细节对应一个产品描述,订单处理时从中获得当前单价、产品重量等信息。
第六章 数据库设计
6.3 概念结构设计
( 4)图 6.21中“发票清单”是一个数据存储,无须作为实体加入分 E-R图。这里的数据存储对应手工凭证,发票上的信息在开具发票同时已及时存入应收账款中了。
( 5)工厂对大宗订货给予优惠。每种产品都规定了不同订货数量的折扣,应增加一个“折扣规则”实体存放这些信息,而不应把它们放在产品描述实体中。
最后得到分 E-R图如图 6.24所示。
第六章 数据库设计
6.3 概念结构设计图 6.24 销售管理子系统的分 E-R图第六章 数据库设计
6.3 概念结构设计对每个实体定义的属性如下:
顾客,{顾客号,顾客名,地址,电话,信贷状况,账目余额 }
定单,{订单号,顾客号,订货项数,订货日期,
交货日期,工种号,生产地点 }
定单细则,{订单号,细则号,零件号,订货数,
金额 }
第六章 数据库设计
6.3 概念结构设计应收账款,{顾客号,订单号,发票号,应收金额,支付日期,支付金额,当前余额,货款限额 }
产品描述,{产品号,产品名,单价,重量 }
折扣规则,{产品号,订货量,折扣 }
注意,为了节省篇幅,实体与属性的关系没有用图形表示,实体的标识码用下横线划出。
第六章 数据库设计
6.3 概念结构设计
6.3.4 视图的集成
视图集成就是把上一步得到的各个分 E R图综合成一个总 E R图。
视图集成可以有两种方式:
( 1) 多个分 E -R图一次集成 ( 图 6.25( a)
( 2) 逐步集成 ( 图 6.25 (b))
第一种方式比较复杂,
第二种方式每次只集成两个分 E -R图,可降低复杂度 。
第六章 数据库设计
6.3 概念结构设计视图的集成步骤:
( 1)合并 ——解决冲突,生成初步 E R图
( 2)修改与重构 ——消除不必要的冗余,生成基本 E R图第六章 数据库设计
6.3 概念结构设计一、合并分 E-R图,生成初步 E-R图 。
各分 E-R图之间的冲突主要有三类:
( 1)属性冲突
( 2)命名冲突
( 3)结构冲突第六章 数据库设计
6.3 概念结构设计
1,属性冲突 ——协商解决
(1) 属性域冲突,即属性值的类型、取值范围或取值集合不同。
(2) 属性取值单位冲突。
2,命名冲突 ——协商解决
(1) 同名异义。
(2) 异名同义(一义多名)。
3,结构冲突 ——根据应用的语义对实体联系的类型进行综合或调整
(1) 同一对象在不同应用中具有不同的抽象。
4,(2) 同一实体在不同局部视图中所包含的属性不完全相同,或者属性的排列次序不完全相同。
(3) 实体之间的联系在不同局部视图中呈现不同的类型。
第六章 数据库设计
6.3 概念结构设计二、修改与重构,生成基本 E-R图
分 E-R图经过合并生成的是初步 E-R图中可能存在冗余的数据和冗余的实体间联系(即存在可由基本数据导出的数据和可由其他联系导出的联系)从而破坏数据库的完整性,给数据库维护增加困难,因此还应该修改、重构初步 E-R图以消除冗余。
消除冗余的方法主要采用分析方法。
还可以用规范化理论第六章 数据库设计
6.3 概念结构设计在前面初步 E-R图中存在着冗余数据和冗余联系:
(1) 学生实体中的年龄属性可以由出生日期推算出来,属于冗余数据,应该去掉。这样不仅可以节省存储空间,
而且当某个学生的出生日期有误,进行修改后,无须相应修改年龄,减少了产生数据不一致的机会。学生:
{ 学号,姓名,出生日期,所在系,年级,平均成绩}
(2) 教室实体与班级实体之间的上课联系可以由教室与课程之间的开设联系、课程与学生之间的选修联系、学生与班级之间的组成联系三者推导出来,因此属于冗余联系,可以消去。
第六章 数据库设计
6.3 概念结构设计
(3) 学生实体中的平均成绩可以从选修联系中的成绩属性中推算出来,但如果应用中需要经常查询某个学生的平均成绩,每次都进行这种计算效率就会太低,因此为提高效率,可以考虑保留该冗余数据,但是为了维护数据一致性应该定义一个触发器来保证学生的平均成绩等于该学生各科成绩的平均值。任何一科成绩修改后,或该学生学了新的科目并有成绩后,就要触发该触发器去修改该学生的平均成绩属性值。
否则会出现数据的不一致。
第六章 数据库设计
6.3 概念结构设计
视图集成后形成的整体整体概念结构还必须进行进一步验证,确保它能够满足下列条件:
( 1)整体概念结构内部必须具有一致性,即不能存在互相矛盾的表达。
( 2)整体概念结构能准确地反映原来的每个视图结构,
包括属性、实体及实体间的联系。
( 3)整体概念结构能满足需要分析阶段所确定的所有要求。
整体概念结构最终还应该提交给用户,征求用户和有关人员的意见,进行评审、修改和优化,然后把它确定下来,作为数据库的概念结构,作为进一步设计数据库的依据。
第六章 数据库设计
6.4 逻辑结构设计逻辑结构设计的任务,
把概念结构设计阶段好的基本 E-R图转换为与选用的
DBMS产品所支持的数据模型相符合的零件机构。
第六章 数据库设计
6.4 逻辑结构设计
设计逻辑结构时一般要分三步进行:
( 1)将概念结构转换为一般的关系、网状、层次模型
( 2)将转化来的关系、网状、层次模型向特定 DBMS支持下的数据模型转换
( 3)对数据模型进行优化第六章 数据库设计
6.4 逻辑结构设计概念结构基本 E-R图一般数据模型关系,网状,层次特定的 DBMS
支持下的数据模型优化的数据模型优化规则
DBMS的特点和限制优化方法图 6.31 逻辑结构设计时的三个步骤第六章 数据库设计
6.4 逻辑结构设计
关系模型的逻辑结构是一组关系模式的集合。
E-R图是由实体、实体的属性和实体之间的联系三个要素组成的。
将 E-R图转换为关系模型实际上就是要将实体、实体的属性和实体之间的联系转化为关系模式,这种转换一般遵循如下原则:
第六章 数据库设计
6.4 逻辑结构设计
E-R图转换为关系模式,一般遵循如下原则:
(1)一个实体型转换为一个关系模式。实体的属性就是关系的属性。实体的码就是关系的码。
(2)一个联系转换为一个关系模式。与该联系相连的各实体的码以及联系本身的属性均转换为关系的属性。而关系的码则由联系的类型分为三种情况。
( 3)具有相同码的关系模式可合并。
第六章 数据库设计
6.4 逻辑结构设计
6.4.2 数据模型的优化
数据库逻辑设计的结果不是唯一的。为了进一步提高数据库应用系统的性能,通常以规范化理论为指导,还应该适当地修改、调整数据模型的结构,这就是数据模型的优化。
第六章 数据库设计
6.4 逻辑结构设计数据模型的优化方法为:
1,确定数据依赖。
2,对于各个关系模式之间的数据依赖进行极小化处理,
消除冗余的联系。
3,按照数据依赖的理论对关系模式逐一进行分析,考查是否存在部分函数依赖、传递函数依赖、多值依赖等,
确定各关系模式分别属于第几范式。
4,按照需求分析阶段得到的各种应用对数据处理的要求,
分析对于这样的应用环境这些模式是否合适,确定是否要对它们进行合并或分解。
5,对关系模式进行必要的分解。
第六章 数据库设计
6.4 逻辑结构设计
6.4.3设计用户子模式
将概念模型转换为逻辑模型后,即生成了整个应用系统的模式后,还应该根据局部应用需求,结合具体
DBMS的特点,设计用户的外模式。
关系数据库管理系统一般都提供了视图概念,支持用户的虚拟视图。我们可以利用这一功能设计更符合局部用户需要的用户外模式。
定义数据库模式主要是从系统的时间效率、空间效率、
易维护等角度出发。
第六章 数据库设计
6.4 逻辑结构设计
由于用户外模式与模式是独立的,因此我们在定义用户外模式时应该更注重考虑用户的习惯与方便。
包括:
(1) 使用更符合用户习惯的别名
(2) 针对不同级别的用户定义不同的外模式,
以满足系统对安全性的要求。
(3) 简化用户对系统的使用第六章 数据库设计
6.5 数据库的物理设计
数据库最终是要存储在物理设备上的。
为一个给定的逻辑数据模型选取一个最适合应用环境的物理结构(存储结构与存取方法)的过程,就是数据库的物理设计。
物理结构依赖于给定的 DBMS和和硬件系统,因此设计人员必须充分了解所用 DBMS的内部特征,特别是存储结构和存取方法;充分了解应用环境,特别是应用的处理频率和响应时间要求;以及充分了解外存设备的特性。
第六章 数据库设计
6.5 数据库的物理设计数据库的物理设计通常分为两步:
确定数据库的物理结构
对物理结构进行评价,评价的重点是时间和空间效率第六章 数据库设计
6.5 数据库的物理设计一、确定数据库的物理结构
⒈确定数据的存储结构
⒉设计数据的存取路径
⒊确定数据的存放位置
⒋确定系统配置第六章 数据库设计
6.5 数据库的物理设计二、评价物理结构
数据库物理设计过程中需要对时间效率、空间效率、
维护代价和各种用户要求进行权衡,其结果可以产生多种方案,数据库设计人员必须对这些方案进行细致的评价,从中选择一个较优的方案作为数据库的物理结构。
评价物理数据库的方法完全依赖于所选用的 DBMS,
主要是从定量估算各种方案的存储空间、存取时间和维护代价入手,对估算结果进行权衡、比较,选择出一个较优的合理的物理结构。如果该结构不符合用户需求,则需要修改设计。
第六章 数据库设计
6.6 数据库的实施和维护数据库实施主要包括以下工作:
用 DDL定义数据库结构
组织数据入库
编制与调试应用程序
数据库试运行第六章 数据库设计
6.6 数据库的实施和维护一、定义数据库结构确定了数据库的逻辑结构与物理结构后,就可以用所选用的 DBMS提供的数据定义语言( DDL)来严格描述数据库结构。
二、数据装载对于数据量不是很大的小型系统,可以用人式方法完成数据的入库,其步骤为:
1.筛选数据
2.转换数据格式
3.输入数据
4.校验数据第六章 数据库设计
6.6 数据库的实施和维护三、编制与调试应用程序数据库应用程序的设计应该与数据设计并行进行。在数据库实施阶段,当数据库结构建立好后,就可以开始编制与调试数据库的应用程序,
也就是说,编制与调试应用程序是与组织数据入库同步进行的。调试应用程序时由于数据入库尚未完成,可先使用模拟数据。
第六章 数据库设计
6.6 数据库的实施和维护四、数据库试运行应用程序调试完成,并且已有一小部分数据入库后,
就可以开始数据库的试运行。
数据库试运行也称为联合调试,其主要工作包括:
功能测试。即实际运行应用程序,执行对数据库的各种操作,测试应用程序的各种功能。
性能测试。即测量系统的性能指标,分析是否符合设计目标。
第六章 数据库设计
6.6 数据库的实施和维护
数据库试运行结果符合设计目标后,数据库就可以真正投入运行了。
数据库投入运行标着开发任务的基本完成和维护工作的开始,并不意味着设计过程的终结,
由于应用环境在不断变化,数据库运行过程中物理存储也会不断变化,对数据库设计进行评价、调整、修改等维护工作是一个长期的任务,
也是设计工作的继续和提高。
第六章 数据库设计
6.6 数据库的实施和维护
在数据库运行阶段,对数据库经常性的维护工作主要是由 DBA完成的,它包括:
⒈数据库的转储和恢复
⒉数据库的安全性、完整性控制
⒊数据库性能的监督、分析和改进
⒋数据库的重组织和重构造第六章 数据库设计小结:
设计一个数据库应用系统需要经历需求分析,概念设计,逻辑结构设计,物理设计,实施,运行维护六个阶段,设计过程中往往还会有许多反复 。
数据库的各级模式正是在这样一个设计过程中逐步形成的 。
目前很多 DBMS都提供了一些辅助工具 ( CASE工具 ),
设计人员可根据需要选用 。
设计一个数据库应用系统需要经历六个阶段:
需求分析概念设计逻辑结构设计物理设计实施运行维护
设计过程中往往还会有许多反复 。
第六章 数据库设计本章重点:
数据库设计的方法和步骤概念结构的设计逻辑结构的设计本章难点:
概念结构的设计逻辑结构的设计第六章 数据库设计
数据库设计是研制数据库及其应用系统的技术,是数据库在应用领域中主要的研究课题。
数据库设计 是指对于一个给定的应用环境,构造最优的数据库模式,建立数据库极其应用系统,有效存储数据,满足用户信息要求和处理要求。
数据库设计通常是在一个通用的DBMS支持下进行的,即利用现成的DBMS为基础。
在数据库领域内,常常把使用数据库的各类系统统称为 数据库应用系统 (DBAS)。
第六章 数据库设计
6.1 数据库设计概述
6.1.1 数据库和信息系统
从使用者角度看,信息系统 是提供信息,辅助人们对环境进行控制和进行决策的系统。 数据库 是信息系统的核心和基础。
一个信息系统的各个部分能否紧密的结合在一起以及如何结合,关键在数据库。
只有对数据库进行合理的逻辑设计和有效的物理设计才能开发出完善而高效的信息系统。数据库设计是信息系统开发和建设的重要组成部分。
大型数据库的设计是一项庞大的工程,属于软件工程范畴。必须把软件工程的原理和方法应用到数据库建设中来。
第六章 数据库设计
6.1 数据库设计概述在数据库设计开始之前,首先要选定参加设计的人员,包括系统分析人员、数据库设计人员、系统开发人员和部分用户代表。其中分析和设计人员是数据库设计的核心人员,
他们将自始至终参与数据库设计,他们的水平一定程度上决定了数据库系统的质量。
第六章 数据库设计
6.1 数据库设计概述用户在数据库设计中也是举足轻重的,他们主要参加需求分析和数据库的运行维护,他们的积极参与(不仅仅是配合)不但能加速数据库设计,而且也是决定数据库设计质量的重要因素。系统开发人员(包括程序员和操作员)则在系统实施阶段参与进来,分别负责建立数据库、编制程序和准备软硬件环境。
第六章 数据库设计
6.1 数据库设计概述第六章 数据库设计
6.1 数据库设计概述
从事数据库设计的人员来讲,主要应该具备以下的技术和知识:
( 1) 计算机科学基础知识和程序设计技术
( 2) 数据库基本知识和数据库设计技术
( 3) 软件工程的原理和方法
( 4) 应用领域的知识
6.1.2 数据库设计的特点
( 1)数据库建设是硬件、软件和干件的结合数据库设计既是一项涉及多学科的综合性技术又是一项庞大的工程项目。,三分技术、
七分管理、十二分基础数据”是数据库建设的基本规律。技术和管理的界面(称之为
“干件”)十分重要。
第六章 数据库设计
6.1 数据库设计概述
( 2)设计过程中是结构(数据)设计和行为
(处理)设计的密切结合数据库设计应该和应用系统设计相结合。也就是说,整个设计过程中要把结构(数据)
设计和行为(处理)设计密切结合起来。
第六章 数据库设计
6.1 数据库设计概述第六章 数据库设计
6.1 数据库设计概述结构和行为分离的设计
6.1.3 数据库设计的困难
懂得计算机知识与数据库设计的人员一般都缺乏对应用对象的业务知识的了解和实际经验。
数据库系统目标是什么往往并不明确,因此,
应用对象的需求是什么也难以明确
缺乏完善的设计工具和方法
应用对象千差万别,难以找到一种适合所有应用对象的工具和方法第六章 数据库设计
6.1 数据库设计概述
6.1.4 数据库设计方法简述
手工试凑法。
规范设计法,主要有:
新奥尔良 ( New Orleans) 方法 。
基于E-R模型的数据库设计方法基于3NF ( 第三模式 ) 的设计方法规范设计从本质上看仍然是手工设计方法,其基本思想是过程迭代和逐步求精 。
从目前技术条件来看,按照一定的设计规程,用工程化方法设计数据库是最实用的方法。
第六章 数据库设计
6.1 数据库设计概述第六章 数据库设计
6.1 数据库设计概述
6.1.5 数据库设计步骤 ( P206图 6.2)
按规范设计的方法将数据库设计分为以下六个阶段:
需求分析概念结构设计逻辑结构设计数据库物理设计数据库实现数据库运行和维护
设计过程中往往还会有许多反复
这个设计步骤是从数据库应用系统设计和开发的全过程来考察数据库设计的问题。因此,它既是数据库也是应用系统的设计过程。
第六章 数据库设计
6.1 数据库设计概述
⒈ 需求分析阶段
需求收集和分析,结果得到 数据字典描述的数据需求 (和数据流图描述的处理需求)。
⒉概念结构设计阶段
通过对用户需求进行综合、归纳与抽象,形成一个独立于具体 DBMS的 概念模型,可以 用 E-R图表示 。
第六章 数据库设计
6.1 数据库设计概述
⒊ 逻辑结构设计阶段
将概念结构转换为某个 DBMS所支持的 数据模型
(例如关系模型),并对其进行优化。
⒋数据库物理设计阶段
为逻辑数据模型选取一个最适合应用环境的物理结构(包括存储结构和存取方法)。
第六章 数据库设计
6.1 数据库设计概述
⒌ 数据库实施阶段
运用 DBMS提供的数据语言及其宿主语言,根据逻辑设计和物理设计的结果建立数据库,编制与调试应用程序,组织数据入库,并进行试运行。
⒍数据库运行和维护阶段
数据库应用系统经过试运行后即可投入正式运行。在数据库系统运行过程中必须不断地对其进行评价、调整与修改。
第六章 数据库设计
6.1 数据库设计概述应用要求应用要求应用要求应用要求概念模式逻辑模式外模式 外模式 外模式综合
按照这样的设计过程,数据库结构设计的不同阶段形成了数据库的各级模式( P209 图 6.4)
第六章 数据库设计
6.2 需求分析
需求分析是数据库设计的起点,也是数据库应用系统设计的起点。我们要特别强调需求分析的重要性,因为设计人员往往忽视或不善于进行需求分析。而需求分析是否详细、正确,将直接影响后面各个阶段,并影响到设计结果是否合理和实用。许多数据库应用系统开发周期一再延误,甚至开发项目最终失败,纠其原因主要是需求分析工作没有到位。
第六章 数据库设计
6.2 需求分析
6.2.1需求分析的任务
需求分析简单的说就是分析用户的要求。
需求分析的任务是调查应用领域,对应用领域中各应用的信息要求和操作要求进行详细分析,形成需求分析说明书。
第六章 数据库设计
6.2 需求分析
1,需求分析的任务需求分析的任务是:
通过详细调查现实世界要处理的对象
(组织、部门、企业等),充分了解原系统(手工系统或计算机系统)工作概况,明确用户的各种需求,然后在此基础上确定新系统的功能。
第六章 数据库设计
6.2 需求分析
2,需求分析的重点
需求分析的重点是调查、收集与分析用户在数据管理中的要求,包括:
( 1)信息要求,信息的内容、性质
( 2)处理要求:处理功能、处理方式,响应时间
( 3)安全性与完整性要求
需求分析调查的重点是:
( 1)数据
( 2)处理第六章 数据库设计
6.2 需求分析
3,需求分析的方法需求分析:
( 1)调查清楚用户的实际要求;
( 2)与用户达成共识;
( 3)分析与表达这些需求第六章 数据库设计
6.2 需求分析调查用户需求的具体步骤:
⑴ 调查组织机构情况
⑵ 调查各部门的业务活动情况
⑶ 协助用户明确对新系统的各种要求(分析用户需求)
⑷ 确定新系统的边界第六章 数据库设计
6.2 需求分析常用的调查方法有:
⑴跟班作业
⑵开调查会
⑶请专人介绍。
⑷询问
⑸设计调查表请用户填写
⑹查阅记录第六章 数据库设计
6.2 需求分析
4,分析和表达用户的需求:
( 1)管理业务的调查分析 ——管理业务流程图
( 2)数据流程的调查分析 ——数据流程图第六章 数据库设计
6.2 需求分析图 6.6 需求分析过程第六章 数据库设计
6.2 需求分析
6.2.3 数据字典
数据字典是各类数据描述的集合。
数据字典是对数据流图的补充说明
数据字典是关于数据库中数据的描述,而不是数据本身。它为设计人员和数据库管理员在数据库设计、实现和运行阶段控制有关数据提供依据。
数据字典通常包括:
⒈数据项
⒉数据结构
⒊数据流
⒋数据存储
⒌处理过程第六章 数据库设计
6.2 需求分析
⒈ 数据项
数据项是不可再分的数据单位。
对数据项的描述通常包括以下内容:
数据项描述={数据项名,数据项含义说明,
别名,数据类型,长度,取值范围,取值含义,与其他数据项的逻辑关系}
其中取值范围、与其他数据项的逻辑关系定义了数据的完整性约束条件,是设计数据检验功能的依据。
第六章 数据库设计
6.2 需求分析例:学生学籍管理子系统,数据字典的定义(示例)。
,学号”数据项可以如下描述:
数据项,学号含义说明:唯一标识每个学生别名,学生编号类型,字符型长度,8
取值范围,00000000至 99999999
取值含义:前两位标明该学生所在年级,后六位按顺序编号与其他数据项的逻辑关系:
第六章 数据库设计
6.2 需求分析
⒉ 数据结构
数据结构反映了数据之间的组合关系。
一个数据结构可以由若干个数据项组成,也可以由若干个数据结构组成,或由若干个数据项和数据结构混合组成。
对数据结构的描述通常包括以下内容:
数据结构描述={数据结构名,含义说明,组成,{数据项或数据结构}}
第六章 数据库设计
6.2 需求分析
,学生” 数据结构的描述如下:
数据结构,学生含义说明,是学籍管理子系统的主体数据结构,定义了一个学生的有关信息组成:学号,姓名,性别,年龄,所在系,年级第六章 数据库设计
6.2 需求分析
⒊ 数据流
数据流是数据结构在系统内传输的路径。
对数据流的描述通常包括以下内容:
数据流描述={数据流名,说明,数据流来源,数据流去向,组成,{数据结构},平均流量,高峰期流量}
其中数据流来源是说明该数据流来自哪个过程。数据流去向是说明该数据流将到哪个过程去。平均流量是指在单位时间(每天、
每周、每月等)里的传输次数。高峰期流量则是指在高峰时期的数据流量。
第六章 数据库设计
6.2 需求分析
,体检结果”数据流的描述如下:
数据流,体检结果说明,学生参加体格检查的最终结果数据流来源:体检数据流去向:批准组成,……
平均流量,……
高峰期流量,……
第六章 数据库设计
6.2 需求分析
⒋ 数据存储
数据存储是数据结构停留或保存的地方,也是数据流的来源和去向之一。
对数据存储的描述通常包括以下内容:
数据存储描述={数据存储名,说明,编号,流入的数据流,流出的数据流,组成,{数据结构},数据量,
存取方式}
其中数据量是指每次存取多少数据,每天(或每小时、每周等)存取几次等信息。存取方法包括是批处理,还是联机处理;是检索还是更新;是顺序检索还是随机检索等。另外,流入的数据流要指出其来源,
流出的数据流要指出其去向。
第六章 数据库设计
6.2 需求分析
,学生登记表”数据存储的描述如下:
数据存储,学生登记表说明,记录学生的基本情况流入数据流,……
流出数据流,……
组成,……
数据量,每年 3000张存取方式,随机存取第六章 数据库设计
6.2 需求分析
⒌ 处理过程
数据字典中只需要描述处理过程的说明性信息,
通常包括以下内容:
处理过程描述={处理过程名,说明,输入,{数据流},输出,{数据流},处理,{简要说明}}
其中简要说明中主要说明该处理过程的功能及处理要求。功能是指该处理过程用来做什么(而不是怎么做),处理要求包括处理频度要求,如单位时间里处理多少事务,多少数据量;响应时间要求等。这些处理要求是后面物理设计的输入及性能评价的标准。
第六章 数据库设计
6.2 需求分析
,分配宿舍”处理过程的描述如下:
处理过程:分配宿舍说明,为所有新生分配学生宿舍输入,学生,宿舍,
输出,宿舍安排处理,在新生报到后,为所有新生分配学生宿舍。要求同一间宿舍只能安排同一性别的学生,同一个学生只能安排在一个宿舍中。每个学生的居住面积不小于 3平方米。安排新生宿舍其处理时间应不超过 15分钟。
第六章 数据库设计
6.2 需求分析
6.2.4 需求分析注意点
确定用户需求是一件很困难的事情 。 这是因为:
第一,应用部门的业务人员常常缺少计算机的专业知识,而数据库设计人员又常常缺乏应用领域的业务知识,因此相互的沟通往往比较困难 。
第二,不少业务人员往往对开发计算机系统有不同程度的抵触情绪 。 有的认为需求调查影响了他们的工作,给他们造成了负担,特别是新系统的建设常常伴随企业管理的改革,这会遇到不同部门不同程度的抵触 。
第六章 数据库设计
6.2 需求分析
第三,应用需求常常在不断改变,使系统设计也常常要进行调整甚至要有重大改变。
面对这些困难,设计人员特别应该注意:
1.用户参与的重要性
2,用原型法来帮助用户确定他们的需求
3,预测系统的未来改变第六章 数据库设计
6.3 概念结构设计
将需求分析得到的用户需求 抽象 为信息结构即 概念模型 的过程就是 概念结构设计 。
概念结构是对现实世界的一种抽象,抽取人们关心的共同特性,忽略非本质的细节,并把这些特性用各种概念精确地加以描述。
第六章 数据库设计
6.3 概念结构设计
6.3.1 概念结构
概念结构的特点:
( 1)能够充分反映现实世界,包括实体和实体之间的联系,是现实世界的一个真实模型。
( 2)易于理解,便于和不熟悉计算机的用户交换意见,
使用户易于参与。
( 3)易于更改,当现实世界需求改变时,概念结构又可以很容易地作相应调整。
( 4)易于向关系、网状、层次等各种数据模型转换第六章 数据库设计
6.3 概念结构设计
6.3.2 概念结构设计的方法与步骤
1,概念结构设计的方法
设计概念结构通常有四类方法:
( 1)自顶向下
( 2)自底向上
( 3)逐步扩张
( 4)混合策略
其中最经常采用的策略是自底向上方法 。 即自顶向下地进行需求分析,然后再自底向上地设计概念结构,如图 6.8所示 。
无论采用哪种设计方法,一般都以 E-R模型为工具来描述概念结构。
第六章 数据库设计
6.3 概念结构设计需求需求 1
需求 1,1 需求 1,2
概念模式 1,1 概念模式 1,2
概念模式 1
需求 n
需求 n,1 需求 n,2
概念模式 n,1 概念模式 n,2
概念模式 n
( 应用 1)
全局概念模式
( 应用 n )
需求分析
( 自顶向下 )
概念结构设计
( 自底向上 )
图 6,8 自顶向下需求分析与自底向上设计概念结构第六章 数据库设计
6.3 概念结构设计
以自底向上设计概念结构的方法为例,其 步骤通常分为两步:
( 1)首先要根据需求分析的结果(数据流图、
数据字典等)对现实世界的数据进行抽象,设计各个局部视图即分 E-R图
( 2)集成局部视图第六章 数据库设计
6.3 概念结构设计数据抽象、局部视图的设计视图集成分 E - R 图总 E - R 图需求分析
D F D
DD
返回用户征求意见直到满意为止逻辑结构设计图 6,9 概念结构设计步骤第六章 数据库设计
6.3 概念结构设计
6.3.3 数据抽象与局部视图设计
1.抽象
抽象是对实际的人、物、事和概念的人为处理。
它抽去人们关心的共同特性。忽略非本质的细节,并把这些特性用各种概念精确地加以描述。
这些概念组成了某种模型。
2.抽象的分类
(A)分类 ( Classification )
(B)聚集 ( Aggregation)
(C)概括 ( Generalization)
第六章 数据库设计
6.3 概念结构设计
(A)分类 ( Classification )
定义某一概念作为现实世界中一组对象的类型。这些对象具有某些共同的特性和行为。
它抽象了对象值和型之间的,is member of”的语义。
在 E-R模型中,实体型就是这种抽象 。
学生张颖 刘勇 周圆
Is member of
……王平第六章 数据库设计
6.3 概念结构设计
(B)聚集 ( Aggregation)
定义某一类型的组成部分。
它抽象了对象内部类型和成分之间,is part of”的语义。
在 E-R模型中,若干属性的聚集组成了实体型,就是这种抽象 。
Is part of
学生
……学号 姓名 专业 班级第六章 数据库设计
6.3 概念结构设计
(C)概括 ( Generalization)
定义类型之间的一种子集联系。
它抽象了类型之间的,is subset of”的语义。
概括具有一个很重要的性质:继承性。子类继承超类上定义的所有抽象。子类可以增加自己的某些特殊属性。
学生本科生
Is subset of
…… 研究生第六章 数据库设计
6.3 概念结构设计
概念结构设计的第一步是利用上面介绍的抽象机制对需求分析阶段收集到的数据进行分类、
组织(聚集),形成实体、实体的属性,标识实体的码,确定实体之间的联系类型(
1:1,1:n,n:m),设计分 E-R图。
第六章 数据库设计
6.3 概念结构设计
设计分 E-R图的步骤是:
1,选择局部应用根据系统的具体情况,在多层的数据流图中选择一个适当层次的(经验很重要)数据流图,
让这组图中每一部分对应一个局部应用,我们即可以这一层次的数据流图为出发点,设计分
E-R图。
2,逐一设计分 E-R图对每个局部应用设计分 E-R图。标定局部应用中的实体、实体的属性、标识实体的码,确定实体之间的联系及其类型( 1:1,1:n,m:n)。
第六章 数据库设计
6.3 概念结构设计
设计分 E-R图的步骤是:
3,调整 ——如何划分 实体、属性
调整的 基本准则是:在给定的应用环境中
( 1 ) 作为,属性,,不能再具有需要描述的性质 。 即属性不能是另一些属性的聚集 。
( 2 ) 属性不能与其它实体具有联系,即 E R图中的联系是实体之间的联系 。
注意:
符合上述两条的,事物,一般作为属性来对待 。 能够作为属性的,尽量作为属性对待,目的在于简化 E R图的处置 。
第六章 数据库设计
6.3 概念结构设计图 6.15 职称作为一个实体第六章 数据库设计
6.3 概念结构设计图 6.16 病房作为一个实体第六章 数据库设计
6.3 概念结构设计某工厂管理信息系统物质管理子系统 销售管理子系统 人事管理子系统设计分 E - R
图的出发点
…
图 6,1 7 设计分 E - R 图的出发点例 1,销售管理字系统分 E-R的设计( P220)
第六章 数据库设计
6.3 概念结构设计顾客
1,0
接收订单已批准订单
2,0
处理订单顾客账目状况应收账款产品描述订单细节
3,0
开发票订单记录本包装通知单结算数据主管部门主管部门批准 / 不批准核对订单数据生产部门生产通知单准备发货细节应收账款发票
4,0
支付过账调整未付差额调整
5,0
提供应收账款应收账款报表财务费用变动当前价格订单数据批准 / 不批准图 6,1 8 销售管理子系统第一层数据流图第六章 数据库设计
6.3 概念结构设计
1,1
核对价格产品描述主管部门顾客订单数据已核对价格的订单
1,2
核对账目状况
1,3
批准订单账目状况已核对的订单已批准的订单当前价格应收账款顾客账目状况批准 / 不批准主管部门批准 / 不批准 核对订单数据图 6,1 9 接收订单第六章 数据库设计
6.3 概念结构设计图 6.20 处理订单第六章 数据库设计
6.3 概念结构设计图 6.21 开发票第六章 数据库设计
6.3 概念结构设计图 6.22 支付过账第六章 数据库设计
6.3 概念结构设计
分析数据流图和数据字典,知道整个系统功能围绕了“订单”和“应收账款”
的处理。数据结构中订单、顾客、顾客应收账目用得最多,它们是许多子功能和数据流共享的数据,因此先设计该分 E-
R图的草图(如图 6.23所示)。
第六章 数据库设计
6.3 概念结构设计第六章 数据库设计
6.3 概念结构设计
图中在订单实体与产品实体之间的问号,?,
表示还不能确定这两个实体之间的联系类型 。
然后参照第二层数据流图和数据字典中的详尽描述,遵循前面给出的两个准则,进行如下调整:
第六章 数据库设计
6.3 概念结构设计
( 1)每张订单由订单号、若干头信息和订单细节组成。
订单细节又有订货的零件号、数量等来描述。按照准则( 2),订单细节就不能作订单的属性处理而应该上升为实体。
( 2)一张订单可以订若干产品,所以订单与订单细节两个实体之间是 1∶ n的联系。
( 3)原订单和产品的联系实际上是订单细节和产品的联系。每条订货细节对应一个产品描述,订单处理时从中获得当前单价、产品重量等信息。
第六章 数据库设计
6.3 概念结构设计
( 4)图 6.21中“发票清单”是一个数据存储,无须作为实体加入分 E-R图。这里的数据存储对应手工凭证,发票上的信息在开具发票同时已及时存入应收账款中了。
( 5)工厂对大宗订货给予优惠。每种产品都规定了不同订货数量的折扣,应增加一个“折扣规则”实体存放这些信息,而不应把它们放在产品描述实体中。
最后得到分 E-R图如图 6.24所示。
第六章 数据库设计
6.3 概念结构设计图 6.24 销售管理子系统的分 E-R图第六章 数据库设计
6.3 概念结构设计对每个实体定义的属性如下:
顾客,{顾客号,顾客名,地址,电话,信贷状况,账目余额 }
定单,{订单号,顾客号,订货项数,订货日期,
交货日期,工种号,生产地点 }
定单细则,{订单号,细则号,零件号,订货数,
金额 }
第六章 数据库设计
6.3 概念结构设计应收账款,{顾客号,订单号,发票号,应收金额,支付日期,支付金额,当前余额,货款限额 }
产品描述,{产品号,产品名,单价,重量 }
折扣规则,{产品号,订货量,折扣 }
注意,为了节省篇幅,实体与属性的关系没有用图形表示,实体的标识码用下横线划出。
第六章 数据库设计
6.3 概念结构设计
6.3.4 视图的集成
视图集成就是把上一步得到的各个分 E R图综合成一个总 E R图。
视图集成可以有两种方式:
( 1) 多个分 E -R图一次集成 ( 图 6.25( a)
( 2) 逐步集成 ( 图 6.25 (b))
第一种方式比较复杂,
第二种方式每次只集成两个分 E -R图,可降低复杂度 。
第六章 数据库设计
6.3 概念结构设计视图的集成步骤:
( 1)合并 ——解决冲突,生成初步 E R图
( 2)修改与重构 ——消除不必要的冗余,生成基本 E R图第六章 数据库设计
6.3 概念结构设计一、合并分 E-R图,生成初步 E-R图 。
各分 E-R图之间的冲突主要有三类:
( 1)属性冲突
( 2)命名冲突
( 3)结构冲突第六章 数据库设计
6.3 概念结构设计
1,属性冲突 ——协商解决
(1) 属性域冲突,即属性值的类型、取值范围或取值集合不同。
(2) 属性取值单位冲突。
2,命名冲突 ——协商解决
(1) 同名异义。
(2) 异名同义(一义多名)。
3,结构冲突 ——根据应用的语义对实体联系的类型进行综合或调整
(1) 同一对象在不同应用中具有不同的抽象。
4,(2) 同一实体在不同局部视图中所包含的属性不完全相同,或者属性的排列次序不完全相同。
(3) 实体之间的联系在不同局部视图中呈现不同的类型。
第六章 数据库设计
6.3 概念结构设计二、修改与重构,生成基本 E-R图
分 E-R图经过合并生成的是初步 E-R图中可能存在冗余的数据和冗余的实体间联系(即存在可由基本数据导出的数据和可由其他联系导出的联系)从而破坏数据库的完整性,给数据库维护增加困难,因此还应该修改、重构初步 E-R图以消除冗余。
消除冗余的方法主要采用分析方法。
还可以用规范化理论第六章 数据库设计
6.3 概念结构设计在前面初步 E-R图中存在着冗余数据和冗余联系:
(1) 学生实体中的年龄属性可以由出生日期推算出来,属于冗余数据,应该去掉。这样不仅可以节省存储空间,
而且当某个学生的出生日期有误,进行修改后,无须相应修改年龄,减少了产生数据不一致的机会。学生:
{ 学号,姓名,出生日期,所在系,年级,平均成绩}
(2) 教室实体与班级实体之间的上课联系可以由教室与课程之间的开设联系、课程与学生之间的选修联系、学生与班级之间的组成联系三者推导出来,因此属于冗余联系,可以消去。
第六章 数据库设计
6.3 概念结构设计
(3) 学生实体中的平均成绩可以从选修联系中的成绩属性中推算出来,但如果应用中需要经常查询某个学生的平均成绩,每次都进行这种计算效率就会太低,因此为提高效率,可以考虑保留该冗余数据,但是为了维护数据一致性应该定义一个触发器来保证学生的平均成绩等于该学生各科成绩的平均值。任何一科成绩修改后,或该学生学了新的科目并有成绩后,就要触发该触发器去修改该学生的平均成绩属性值。
否则会出现数据的不一致。
第六章 数据库设计
6.3 概念结构设计
视图集成后形成的整体整体概念结构还必须进行进一步验证,确保它能够满足下列条件:
( 1)整体概念结构内部必须具有一致性,即不能存在互相矛盾的表达。
( 2)整体概念结构能准确地反映原来的每个视图结构,
包括属性、实体及实体间的联系。
( 3)整体概念结构能满足需要分析阶段所确定的所有要求。
整体概念结构最终还应该提交给用户,征求用户和有关人员的意见,进行评审、修改和优化,然后把它确定下来,作为数据库的概念结构,作为进一步设计数据库的依据。
第六章 数据库设计
6.4 逻辑结构设计逻辑结构设计的任务,
把概念结构设计阶段好的基本 E-R图转换为与选用的
DBMS产品所支持的数据模型相符合的零件机构。
第六章 数据库设计
6.4 逻辑结构设计
设计逻辑结构时一般要分三步进行:
( 1)将概念结构转换为一般的关系、网状、层次模型
( 2)将转化来的关系、网状、层次模型向特定 DBMS支持下的数据模型转换
( 3)对数据模型进行优化第六章 数据库设计
6.4 逻辑结构设计概念结构基本 E-R图一般数据模型关系,网状,层次特定的 DBMS
支持下的数据模型优化的数据模型优化规则
DBMS的特点和限制优化方法图 6.31 逻辑结构设计时的三个步骤第六章 数据库设计
6.4 逻辑结构设计
关系模型的逻辑结构是一组关系模式的集合。
E-R图是由实体、实体的属性和实体之间的联系三个要素组成的。
将 E-R图转换为关系模型实际上就是要将实体、实体的属性和实体之间的联系转化为关系模式,这种转换一般遵循如下原则:
第六章 数据库设计
6.4 逻辑结构设计
E-R图转换为关系模式,一般遵循如下原则:
(1)一个实体型转换为一个关系模式。实体的属性就是关系的属性。实体的码就是关系的码。
(2)一个联系转换为一个关系模式。与该联系相连的各实体的码以及联系本身的属性均转换为关系的属性。而关系的码则由联系的类型分为三种情况。
( 3)具有相同码的关系模式可合并。
第六章 数据库设计
6.4 逻辑结构设计
6.4.2 数据模型的优化
数据库逻辑设计的结果不是唯一的。为了进一步提高数据库应用系统的性能,通常以规范化理论为指导,还应该适当地修改、调整数据模型的结构,这就是数据模型的优化。
第六章 数据库设计
6.4 逻辑结构设计数据模型的优化方法为:
1,确定数据依赖。
2,对于各个关系模式之间的数据依赖进行极小化处理,
消除冗余的联系。
3,按照数据依赖的理论对关系模式逐一进行分析,考查是否存在部分函数依赖、传递函数依赖、多值依赖等,
确定各关系模式分别属于第几范式。
4,按照需求分析阶段得到的各种应用对数据处理的要求,
分析对于这样的应用环境这些模式是否合适,确定是否要对它们进行合并或分解。
5,对关系模式进行必要的分解。
第六章 数据库设计
6.4 逻辑结构设计
6.4.3设计用户子模式
将概念模型转换为逻辑模型后,即生成了整个应用系统的模式后,还应该根据局部应用需求,结合具体
DBMS的特点,设计用户的外模式。
关系数据库管理系统一般都提供了视图概念,支持用户的虚拟视图。我们可以利用这一功能设计更符合局部用户需要的用户外模式。
定义数据库模式主要是从系统的时间效率、空间效率、
易维护等角度出发。
第六章 数据库设计
6.4 逻辑结构设计
由于用户外模式与模式是独立的,因此我们在定义用户外模式时应该更注重考虑用户的习惯与方便。
包括:
(1) 使用更符合用户习惯的别名
(2) 针对不同级别的用户定义不同的外模式,
以满足系统对安全性的要求。
(3) 简化用户对系统的使用第六章 数据库设计
6.5 数据库的物理设计
数据库最终是要存储在物理设备上的。
为一个给定的逻辑数据模型选取一个最适合应用环境的物理结构(存储结构与存取方法)的过程,就是数据库的物理设计。
物理结构依赖于给定的 DBMS和和硬件系统,因此设计人员必须充分了解所用 DBMS的内部特征,特别是存储结构和存取方法;充分了解应用环境,特别是应用的处理频率和响应时间要求;以及充分了解外存设备的特性。
第六章 数据库设计
6.5 数据库的物理设计数据库的物理设计通常分为两步:
确定数据库的物理结构
对物理结构进行评价,评价的重点是时间和空间效率第六章 数据库设计
6.5 数据库的物理设计一、确定数据库的物理结构
⒈确定数据的存储结构
⒉设计数据的存取路径
⒊确定数据的存放位置
⒋确定系统配置第六章 数据库设计
6.5 数据库的物理设计二、评价物理结构
数据库物理设计过程中需要对时间效率、空间效率、
维护代价和各种用户要求进行权衡,其结果可以产生多种方案,数据库设计人员必须对这些方案进行细致的评价,从中选择一个较优的方案作为数据库的物理结构。
评价物理数据库的方法完全依赖于所选用的 DBMS,
主要是从定量估算各种方案的存储空间、存取时间和维护代价入手,对估算结果进行权衡、比较,选择出一个较优的合理的物理结构。如果该结构不符合用户需求,则需要修改设计。
第六章 数据库设计
6.6 数据库的实施和维护数据库实施主要包括以下工作:
用 DDL定义数据库结构
组织数据入库
编制与调试应用程序
数据库试运行第六章 数据库设计
6.6 数据库的实施和维护一、定义数据库结构确定了数据库的逻辑结构与物理结构后,就可以用所选用的 DBMS提供的数据定义语言( DDL)来严格描述数据库结构。
二、数据装载对于数据量不是很大的小型系统,可以用人式方法完成数据的入库,其步骤为:
1.筛选数据
2.转换数据格式
3.输入数据
4.校验数据第六章 数据库设计
6.6 数据库的实施和维护三、编制与调试应用程序数据库应用程序的设计应该与数据设计并行进行。在数据库实施阶段,当数据库结构建立好后,就可以开始编制与调试数据库的应用程序,
也就是说,编制与调试应用程序是与组织数据入库同步进行的。调试应用程序时由于数据入库尚未完成,可先使用模拟数据。
第六章 数据库设计
6.6 数据库的实施和维护四、数据库试运行应用程序调试完成,并且已有一小部分数据入库后,
就可以开始数据库的试运行。
数据库试运行也称为联合调试,其主要工作包括:
功能测试。即实际运行应用程序,执行对数据库的各种操作,测试应用程序的各种功能。
性能测试。即测量系统的性能指标,分析是否符合设计目标。
第六章 数据库设计
6.6 数据库的实施和维护
数据库试运行结果符合设计目标后,数据库就可以真正投入运行了。
数据库投入运行标着开发任务的基本完成和维护工作的开始,并不意味着设计过程的终结,
由于应用环境在不断变化,数据库运行过程中物理存储也会不断变化,对数据库设计进行评价、调整、修改等维护工作是一个长期的任务,
也是设计工作的继续和提高。
第六章 数据库设计
6.6 数据库的实施和维护
在数据库运行阶段,对数据库经常性的维护工作主要是由 DBA完成的,它包括:
⒈数据库的转储和恢复
⒉数据库的安全性、完整性控制
⒊数据库性能的监督、分析和改进
⒋数据库的重组织和重构造第六章 数据库设计小结:
设计一个数据库应用系统需要经历需求分析,概念设计,逻辑结构设计,物理设计,实施,运行维护六个阶段,设计过程中往往还会有许多反复 。
数据库的各级模式正是在这样一个设计过程中逐步形成的 。
目前很多 DBMS都提供了一些辅助工具 ( CASE工具 ),
设计人员可根据需要选用 。