本文仅供参考学习使用,谢谢
数据库设计是指对于一个给定的应用环境,设计一个优良的数据库逻辑模
式和物理结构,并据此建立数据库及其应用系统,使之能够有效地存储和管
理数据,满足各种用户的应用需求,包括信息管理要求和数据处理要求:
- 信息管理要求:在数据库中存储和管理需要的数据对象 。
- 数据处理要求:对数据对象需要进行的处理,如查询、增删改、统计和分析等。
数据库建设的基本规律
结构(数据)设计和行为(处理)设计相结合
大型数据库设计是涉及多学科的综合性技术,又是一项庞大的工程项目要求多方面的知识和技术
主要包括:
数据库设计工具
数据库设计分6个阶段
参加数据库设计的人员
需求分析阶段:
综合各个用户的应用需求
概念设计阶段: 形成独立于机器特点,独立于各个 DBMS产品的概念模式(E-R图)
逻辑设计阶段:
物理设计阶段:
根据数据库管理系统特点和处理的需要,进行物理存储安排,建立索引,形成数据库内模式
什么是需求分析——分析用户的要求
是设计数据库的起点
需求分析的重要性
结果是否准确地反映了用户的实际要求,将直接影响到后面各个阶段的设计,并影响到设计结果是否合理和实用
调查的重点是“数据”和“处理”,获得用户对数据库的要求
确定用户需求的难点
解决方法
数据流程图(Data Flow Diagram ,简称DFD)
也称为数据流图,是便于用户理解的系统数据流程的图形表示,能精确地在逻辑上描述系统的功能、输入、输出和数据存储。它表达了数据和处理过程的关系。
常用符号:
- 代表系统之外的信息提供者或使用者 。
- 源点和终点(又称端点)是系统外的实体,又称作外部项。它们存在于环境之中,与系统有信息交流,从源点到系统的信息叫系统的输入;从系统到终点的信息称系统的输出。同—个端点可以是人或其它系统。在DFD中引入源点和终点是为了便于理解系统,所以不需要详细描述它们。它们可有编号,以“S”开头。
- 加工又称处理亦称变换,它表示对数据流的操作或处理。
- 加工的符号分成上、下两部分,从上到下分别是标识部分和功能描述部分。
- 标识部分用于标注加工编号,加工编号应具有唯一性,以标识加工,以“P”开头。
- 功能描述部分用来写加工名。为使DFD清晰易读,加工名应简单,能概括地说明对数据的加工行为,其详细描述在数据词典中定义。
- 加工要逐层分解,以求得分解后的加工功能简单、易于理解。
- 数据存储是用来存贮数据的。代表数据暂时存储或永久保存的地方。
- 在分层DFD中,数据存储一般仅属于某一层或某几层,因此又称数据存储为局部文件。现对数据存储符号说明如下:
①数据存储名写在开口的长方框内,应概要地说明文件中的主要数据。
②数据存储上一定要有数据流。
③为便于说明和管理,数据存储亦应编号,编号写在文件符号左端小方格中,以“D”开头。
④为避免DFD中出现交叉线,同一数据存储可在多处画出,可以用下图所示符号表示数据存储重复
- 数据流(Data Flow)由一个或一组确定的数据组成。是在加工之间有向流动的数据项或数据集合
①数据流名应能直观地反映数据流的含义。
②数据流的流向
③数据流可以同名,也可以有相同的数据结构,但必须有不同的数据或具有不同的含义。
④两个符号(加工、外部项、数据存储)之间可以有多个数据流存在,DFD并不表明它们之间的任何关系,诸如次序、主次等。
⑤避免错误的数据流命名方法
3 绘制数据流图的主要原则
(1)明确系统界面
(2)自顶向下逐层扩展:构造DFD通常采用自项向下、逐层分解,直到功能细化为止,形成若干层次的DFD
(3)合理布局
(4)数据流图绘制过程,就是系统的逻辑模型的形成过程,必须始终与用户密切接触,详细讨论,不断修改,也要和其他系统建设者共同商讨一求一致意见
数据流图的具体绘制步骤
(1)确定所开发的系统的外部项(外部实体),即系统的数据来源和去处。
(2)确定整个系统的输出数据流和输入数据流,把系统作为一个加工环节,画出顶层图(第0层图)。
(3)确定系统的主要信息处理功能,按此将整个系统分解成几个加工环节(子系统)确定每个加工的输出与输入数据流以及与这些加工有关的数据存储。
(4)根据自顶向下,逐层分解的原则,对上层图中全部或部分加工环节进行分解。
(5)重复步骤(4),直到逐层分解结束。
(6)对图进行检查和合理布局,主要检查分解是否恰当、彻底,DFD中各层是否有遗漏、重复、冲突之处,各层DFD及同层DFD之间关系是否争取及命名、编号是否确切、合理等,对错误与不当之处进行修改。
(7)和用户进行交流,在用户完全理解数据图的内容的基础上征求用户的意见
eg
图书预订系统:书店向顾客发放订单,顾客将所填订单交由系统处理,系统首先依据图书目录对订单进行检查并对合格订单进行处理,处理过程中根据顾客情况和订单数目将订单分为优先订单与正常订单两种,随时处理优先订单,定期处理正常订单。最后系统根据所处理的订单汇总,并按出版社要求发给出版社。
画出图书预定系统的各层数据流图
什么是数据字典?
数据字典是关于数据库中数据的描述,称为元数据。 它不是数据本身,而是数据的数据。
数据字典的内容
数据项是不可再分的数据单位
数据结构反映了数据之间的组合关系
数据流是数据结构在系统内部传输的路径
数据流描述={ 数据流名,说明,数据流来源,数据流去向,组成: {数据结构}, 平均流量,高峰期流量 }
数据存储是数据结构停留或保存的地方,也是数据流的来源和去向之一
处理过程具体处理逻辑一般用判定表或判定树来描述。
什么是概念结构设计
对概念模型的基本要求
- 实体(Entity) 客观存在并可相互区别的事物称为实体。 可以是具体的人、事、物或抽象的概念。
- 属性(Attribute) 实体所具有的某一特性称为属性。一个实体可以由若干个属性来刻画。
- 码(Key) 唯一标识实体的属性集称为码。
- 实体型(Entity Type) 用实体名及其属性名集合来抽象和刻画同类实体称为实体型
- 实体集(Entity Set) 同一类型实体的集合称为实体集
- 联系(Relationship)
- 现实世界中事物内部以及事物之间的联系在信息世界 中反映为实体(型)内部的联系和实体(型)之间的联系。
- 实体内部的联系: 是指组成实体的各属性之间的联系
- 实体之间的联系: 通常是指不同实体集之间的联系 实体之间的联系有一对一(1:1)、一对多(1:m)和多对多(m:n)等多种类型
1. 实体之间的联系
(1)两个实体型之间的联系,可以分为三种:
- 如果对于实体集A中的每一个实体,实体集B中最多有一个(也可以没有)实体与
之联系,反之亦然,则称实体集A与实体集B具有一对一联系,记为1∶1。- 例如,学校里一个班级只有一个正班长,而一个班长只在一个班中任职,则班级与 班长之间具有一对一联系。
- 如果对于实体集A中的每一个实体,实体集B中有n个实体(n≥0)与之联系,反之 ,对于实体集B中的每一个实体,实体集A中至多只有一个实体与之联系,则称实体 集A与实体集B有一对多联系,记为1∶n。
- 例如,一个班级中有若干名学生,而每个学生只在一个班级中学习,则班级与学生 之间具有一对多联系。
- 如果对于实体集A中的每一个实体,实体集B中有n个实体(n≥0)与之联系,反之 ,对于实体集B中的每一个实体,实体集A中也有m个实体(m≥0)与之联系,则称 实体集A与实体集B具有多对多联系,记为m∶n。
- 例如,一门课程同时有若干个学生选修,而一个学生可以同时选修多门课程,则课 程与学生之间具有多对多联系。
(2)两个以上的实体型之间的联系:也存在着一对一、一对多、多对多联系
(3)单个实体型内的联系,也存在一对一、一对多、多对多的联系
把参与联系的实体型的数目称为联系的度
两个实体型之间的联系度为2,也称为二元联系
三个实体型之间的联系度为3,也称为 三元联系
N个实体型之间的联系度为N,也称为N元联系
2. E-R图:提供了表示实体型、属性和联系的方法:
例题1:
例题2:
例题三:
- 画出某个工厂物资管理的概念模型(教科书P .218)
- 物资管理涉及的实体有:
- 仓库:属性有仓库号、面积、电话号码
- 零件:属性有零件号、名称、规格、单价、描述
- 供应商:属性有供应商号、姓名、地址、电话号码、账号
- 项目:属性有项目号、预算、开工日期
- 职工:属性有职工号、姓名、年龄、职称
(1) 一个仓库可以存放多种零件,一种零件可以存放在多个仓库中,因此仓库和 零件具有多对多的联系。用库存量来表示某种零件在某个仓库中的数量。
(2) 一个仓库有多个职工当仓库保管员,一个职工只能在一个仓库工作,因此仓 库和职工之间是一对多的联系。
(3) 职工之间具有领导-被领导关系。即仓库主任领导若干保管员,因此职工实 体型中具有一对多的联系。
(4) 供应商、项目和零件三者之间具有多对多的联系。即一个供应商可以供给若 干项目多种零件,每个项目可以使用不同供应商供应的零件,每种零件可由不同供 应商供给。
主要的3种扩展:
1. ISA联系
(1)分类属性
- 分类属性是父实体型的一个属性
- 分类属性的值把父实体型中的实体分派到子实体型中
(2)不相交约束与可重叠约束
- 不相交约束:描述父类中的一个实体不能同时属于多个子类中的实体集。即 一个父类中的实体最多属于一个子类实体集。
- 用ISA联系符号 三角形的一个叉号“X”来表示。
- 可重叠约束:父类中的一个实体能同时属于多个子类中的实体集。子类符号
中没有叉号表示是可重叠的(3)完备性约束
- 描述父类中的一个实体是否必须是某一个子类中的实体。
如果是,则叫做完全特化(total specialization)
否则叫做部分特化(partial specialization)- 完全特化用父类到子类的双线连接来表示
- 部分特化用父类到子类的单线连接来表示
- 说明实体型中的任何一个实体可以在联系中出现的最少次数和最多次数。
- 对实体之间一对一、一对多、多对多联系的细化。
- 约束用一个数对 min…max 表示,0≤min≤max。例如,0…1,1…3,1…*,其中 *代表无穷大。
基数约束的类别
- min=1的约束叫做强制参与约束,即被施加基数约束的实体型中的每个实体都要参与联 系;
- min=0的约束叫做非强制参与约束,被施加基数约束的实体型中的实体可以出现在联系 中,也可以不出现在联系中
- 描述某个实体型是另外一个实体型的一部分。
Part-of 联系可以分为两种情况:
- 非独占的Part-of联系,简称非独占联系
整体实体如果被破坏,另一部分实体仍然可以独立存在- 独占的Part-of联系,简称独占联系
整体实体如果被破坏,部分实体不能存在
Part-of 联系如何表示
- 用非强制参与联系表示非独占的Part-of联系
- 用弱实体类型和识别联系来表示独占联系
PS: 如果一个实体型的存在依赖于其他实体型的存在,则这个实体型叫做弱实体型
双矩形表示弱实体型,用双菱型表示识别联系
UML中的子类
现实世界的事物能作为属性对待的,尽量作为属性对待。可以简化E-R图的处置
两大原则:
eg:某工厂开发信息系统,经过可行性分析,详细调查确定了该系统由物资管理、销售管理、劳动人事管理等子系统组成。
该子系统的主要功能是:
通过需求分析,知道销售子系统功能围绕“订单”和“应收账款”的处理来实现
E-R图的集成一般需要分两步
(1)合并E-R图,生成初步E-R图
属性域冲突:即属性值的类型、取值范围或取值集合不同。
- 例如零件号,有的部门把它定义为整数,有的部门把它定义为字符型。
- 年龄,某些部门以出生日期形式表示职工的年龄,有的用整数表示职工的 年龄。
属性取值单位冲突
- 例如零件的重量有的以公斤为单位,有的以斤为单位,有的以克为单位
- 同名异义:即不同意义的对象在不同的局部应用中具有相同的名字。
- 异名同义(一义多名),即同一意义的对象在不同的局部应用中具有不同
的名字。如对科研项目,财务科称为项目,科研处称为课题,生产管理处称为工程。
- 命名冲突
可能发生在实体、联系一级上
也可能发生在属性一级上
通过讨论、协商等行政手段加以解决
同一对象在不同应用中具有不同的抽象。
例如:职工在某一局部应用中被当作实体,而在另一局部应用中被当作属性。
解决方法:把属性变换为实体或把实体变换为属性,使同一对象具有相同的抽象。同一实体在不同子系统的E-R图中的属性个数和属性排列次序不完全相同。
解决方法:取各子系统的E-R图中属性的并集,再适当调整属性的次序。
实体间的联系在不同的E-R图中为不同的类型。
例如:实体E1与E2在一个E-R图中是多对多联系,在另一个E-R图中是一对多联系
解决方法:根据应用的语义对实体联系的类型进行综合或调整
(2)消除不必要的冗余,设计基本E-R图
用规范化理论来消除冗余
应注意的问题:
逻辑结构设计的任务
转换内容
将E-R图转换为关系模型: 将实体型、实体的属性和实体型之间的联系转化为关系模式。
- 关系模式的属性:实体的属性
- 关系模式的码:实体的码
- 可以转换为一个独立的关系模式
关系模式的属性:与该联系相连的各实体的码以及联系本身的属性
关系模式的候选码:每个实体的码均是该关系模式的候选码
- 也可以与相连的任意一端对应的关系模式合并
关系模式的属性:与某一端关系模式合并,则在该关系模式的属性中加入另一端关系模 式的码和联系的属性
合并后关系模式的码:不变
转换为一个独立的关系模式
关系模式的属性:与该联系相连的各实体的码 + 联系本身的属性
关系模式的码:n端的 实体的码与n端对应的关系模式合并
合并后关系模式的属性:在n端关系模式中 + 1端关系的码 + 联系本身的属性
合并后关系模式的码:不变
可以减少系统模式中的关系个数,一般情况下更倾向于采用这种方法
一个m:n联系转换为一个关系模式
关系的属性:与该联系相连的各实体的码以及联系本身的属性
关系的码:各实体码的组合
转换为一个关系模式
关系模式的属性:与该多元联系相连的各实体的码 + 联系本身的 属性
关系模式的码:各实体码的组合
目的:减少系统中的关系个数
合并方法:
- 将其中一个关系模式的全部属性加入到另一个关系模式中
- 然后去掉其中的同义属性(可能同名也可能不同名)
- 适当调整属性的次序
优化数据模型的方法:
注意事项:
使用更符合用户习惯的别名:
针对不同级别的用户定义不同的视图,提高系统的安全性 :
假设有关系模式:
产品(产品号,产品名,规格,单价,生产车间,生产负责人,产品成本,产品合格率,质量等级)
为一般顾客、为产品销售部门和管理部门建立不同的视图。
简化用户对系统的使用:
某些局部应用中经常要使用一些很复杂的查询,为了方便用户,可以将这些复 杂查询定义为视图。
关系数据库物理设计的内容
PS:不同的DBMS产品
设计物理数据库结构的准备工作
物理数据库设计参数(部分列选)
PS:数据库上运行的事务会不断变化、增加或减少,要根据应用的变化,及时收集设计信息,调整数据库的物理结构
提高存取的效率——查询、插入、删除、更新的效率
如何选择索引存取方法
根据应用要求确定:
CREATE [ UNIQUE ] INDEX 索引名字
ON 表名 [ USING 索引方法 ] (列名1,列名2,[, ...] );
CREATE UNIQUE INDEX studentname ON student
USING Hash (sname);
RDBMS提供的索引方法:
选择索引存取方法的一般规则:
B+树索引的特点:
选择Hash存取方法的规则
如果一个关系的属性主要出现在等值连接条件中或主要出现在等值比较选择条件中,而且满足下列两个条件之一:
索引带来的额外开销:
什么是聚簇
//1. 先创建一个聚簇
CREATE CLUSTER <聚簇名> (<聚簇码>) SIZE (<大小>);
//2. 在聚簇上建立索引
CREATE INDEX <索引名> ON CLUSTER <聚簇名>;
//eg:
CREATE CLUSTER emp_dept_cluster (deptno number(6) ) SIZE 1024;
CREATE INDEX emp_dept_cluster_index ON CLUSTER emp_dept_cluster;
聚簇的用途
大大提高按聚簇属性进行查询的效率
eg: 假设要查询计算机系的所有学生
聚簇的适用范围
既适用于单个关系独立聚簇,也适用于多个关系组合聚簇
eg: 假设用户经常要按姓名查询学生成绩单
SELECT sname, cno, grade from student, sc where student.sno=sc.sno
这一查询涉及学生关系和选修关系的连接操作,按学号连接这两个关系
当SQL语句中包含有与聚簇码有关的ORDER BY,GROUP BY, UNION, DISTINCT等子句或短语时, 使用聚簇特别有利,可以省去或减少对结果集的排序操作
聚簇的局限性
聚簇索引的适用条件
影响数据存放位置和存储结构的因素
这三个方面常常是相互矛盾的
必须进行权衡,选择一个折中方案
基本原则
根据应用情况将
eg:
- 可以将比较大的表分别放在两个磁盘上,以加快存取速度,这在多用 户环境下特别有效。
- 可以将日志文件与数据库对象(表、索引等)放在不同的磁盘以改进 系统的性能
在海量数据和多用户环境下,把数据分布存放在不同的磁盘或磁盘阵列上,可以改进系统性能
数据库管理系统一般都提供了一些存储分配参数
对数据库物理设计过程中产生的多种方案进行评价,从中选择一个较优的方案作为数据库的物理结构
评价方法
一、定义数据库结构
用DBMS提供的DDL来创建数据库结构
CREATE TABLE ;
CREATE VIEW;
CREATE INDEX;
etc
二、数据装载
三、编制与调试应用程序
应用程序调试完成,并且已有一小部分数据入库后,就可以开始对数据库系统进行联合调试
主要工作包括:
数据库性能指标的测量
在数据库运行阶段,对数据库经常性的维护工作主要是由数据库管理员完成的,包括:
- 数据库管理员要针对不同的应用要求制定不同的转 储计划,定期对数据库和日志文件进行备份。
- 一旦发生介质故障,即利用数据库备份及日志文件备 份,尽快将数据库恢复到某种一致性状态
- 初始定义
- 数据库管理员根据用户的实际需要授予不同的操作权限
- 根据应用环境定义不同的完整性约束条件
- 修改定义
- 当应用环境发生变化,对安全性的要求也会发生变化,数据库管理员需要根据实际情况修改原有的安全性控制
- 由于应用环境发生变化,数据库的完整性约束条件也会变化,也 需要数据库管理员不断修正,以满足用户要求
- 在数据库运行过程中,数据库管理员必须监督系统运行,对监测数据进行分析,找出改进系统性能的方法。
- 利用监测工具获取系统运行过程中一系列性能参数的值
- 通过分析这些数据,判断当前系统是否处于最佳运行状态
- 如果不是,则需要通过调整某些参数来改进数据库性能
- 数据库的重组织
数据库运行一段时间后,由于记录的不断增、删、改,会 使数据库的物理存储变坏,从而降低数据库存储空间的利 用率和数据的存取效率,使数据库的性能下降。
数据库重组织的主要工作
- 按原设计要求
- 重新安排存储位置
- 回收垃圾
- 减少指针链
- 数据库的重组织不会改变原设计的数据逻辑结构和物理结构
数据库管理系统一般都提供了供重组织数据库使用的实用程序,帮助数据库管理员重新组织数据库
- 数据库的重构造
数据库应用环境发生变化,会导致实体及实体间的联系也发生相应的变化,使原有的数据库设计不能很好地满 足新的需求
- 增加新的应用或新的实体
- 取消某些已有应用
- 改变某些已有应用
数据库重构造的主要工作
- 根据新环境调整数据库的模式和内模式
- 增加或删除某些数据项
- 改变数据项的类型
- 增加或删除某个表
- 改变数据库的容量
- 增加或删除某些索引
- 重构造数据库的程度是有限的
- 应用需求变化太大,软件硬件发展太快
- 无法通过重构数据库来满足新的需求,或重构数据库 的代价太大,则表明现有数据库应用系统的生命周期 已经结束,应该重新设计新的数据库应用系统了