第四章 数据库设计数据库设计步骤需求分析概念结构设计逻辑结构设计物理设计数据库实施数据库运行和维护小结数据库设计:
是指在给定的应用环境下,根据用户的应用需求构造优良的数据库模式,建立数据库及其应用系统,使之能够有效地存储数据,满足各种用户的应用需求。
数据库设计 特点,
– 数据库设计侧重于对数据的分析和设计,数据库设计应该在整个设计过程中把结构(数据)设计和行为(处理)设计密切结合起来
数据库设计应该与应用系统设计相结合
– 结构(数据)设计:设计数据库框架或数据库结构
– 行为(处理)设计:设计应用程序、事务处理等数据库设计的步骤数据库设计是一项涉及多学科的综合性技术,是一项庞大的工程项目。
信息的三个世界之间的关系人脑的认识抽象现实世界 信息世界 数据世界现实世界问题事物及其联系概念模型实体及其联系数据模型数据及其联系转换一般开发策略,自顶向下,逐步求精,分而治之 。
需求分析与设计概念结构设计逻辑结构设计 物理结构设计需求说明与数据说明概念结构逻辑结构数据库实施 运行和维护数据库实施数据库应用开发的过程的六个阶段从现实世界中获取并抽象用户的信息需求用户信息需求的综合归纳,形成独立于任何 DBMS的信息结构的设计,得到的是概念模型,
是从用户的角度进行的数据描述。常用 E-R图将概念模式转换成用关系模型表达的模式,
并进行规范化处理根据 DBMS特点和处理的需要,进行物理存储安排,建立索引,形成数据库内模式逻辑结构编制程序实现所设计数据库结构的过程,即利用具体的 DBMS的支撑语言完成前段设计的数据库结构运行和维护阶段体现了数据库设计的宗旨,
即数据库整个设计过程的各阶段不是线性发展的,而是迭代式逐步求精进行的
一,需求分析
1.需求分析的任务及方法
2.高校管理系统的信息需求
需求分析的任务一,需求分析需求分析任务,
通过详细调查现实世界要处理的对象(组织、部门、企业等),
充分了解原系统(手工系统或计算机系统)工作概况,明确用户的各种需求,然后在此基础上确定新系统的功能。新系统必须充分考虑今后可能的扩充和改变,不能仅仅按当前应用需求来设计数据库。
需求分析重点 调查、收集与分析用户在数据管理中的信息要求、处理要求、安全性与完整性要求。
信息要求是用户需要从数据库中获得信息的内容与性质。由用户的信息要求可以导出数据要求,即在数据库中需要存储哪些数据。
处理要求是指用户要求完成什么处理功能,对处理的响应时间有什么要求,处理方式是批处理还是联机处理。
收集资料,了解用户需求安全性要求:对存放的信息的安全保密要求完整性要求:数据应满足怎样的约束条件需求分析的方法需求分析用户缺少计算机知识;设计人员缺少用户的专业知识;用户需求发生变化难!
分析和表达用户的需求:
主要包括自顶向下和自底向上两类方法
⑴ 跟班作业
⑵ 开调查会
⑶ 请专人介绍
⑷ 询问
⑸ 设计调查表请用户填写
⑹ 查阅记录

常用调查方法』
⑴ 首先调查组织机构情况
⑵ 然后调查各部门的业务活动情况
⑶ 协助用户明确对新系统的各种要求
⑷ 确定新系统的边界自顶向下的结构化分析方法需求分析的方法需求分析从最上层的系统组织机构入手,采用逐层分解的方式分析系统,
并且把每一层用 数据流图和数据字典 描述。
( Structured Analysis),
图书借阅管理系统
1
学 生 数 据图 书 数 据图书库存数据

– 用来说明或描述系统中数据的静态组成结构的
– 数据库系统中所有数据的详尽描述,是各类数据属性的清单
– 包括:
数据项:数据的最小单位
数据结构:若干数据项有意义的集合
数据流:表示某一处理过程的输入或输出
数据存储:处理过程中存取的数据
处理过程:该过程的功能等
– 数据字典在需求分析阶段建立,在数据库设计过程中不断修改、
充实、完善数据字典需求分析数据流图表达了数据和处理过程的关系。系统中的数据则借助数据字典( Data Dictionary)来描述。
数据字典数据字典 (1)
需求分析
“学号”数据项,
数据项,学号含义说明:唯一标识每个学生别名,学生编号类型,字符型长度,8
取值范围,00000000至 99999999
取值含义:前两位标别该学生所在年级,后六位按顺序编号与其他数据项的逻辑关系:
“学生” 数据结构,
数据结构:学生含义说明:是学籍管理子系统的主体数据结构,定义了一个学生的有关信息组 成,学号,姓名,性别,
年龄,所在系,年级数据流“体检结果”,
数据流,体检结果说 明,学生参加体格检查的最终结果数据流来源:体检数据流去向:批准组 成,……
平均流量,……
高峰期流量,……
数据存储“学生登记表”,
数据存储,学生登记表说明,记录学生的基本情况流入数据流,……
流出数据流,……
组成,……
数据量,每年 3000张存取方式,随机存取处理过程“分配宿舍”,
处理过程:分配宿舍说明,为所有新生分配学生宿舍输入,学生,宿舍,
输出,宿舍安排处理,在新生报到后,为所有新生分配学生宿舍。要求同一间宿舍只能安排同一性别的学生,同一个学生只能安排在一个宿舍中。每个学生的居住面积不小于 3平方米。安排新生宿舍其处理时间应不超过 15分钟。
⑴ 任务
DB应用系统要处理的对象 (组织、企业、部门等 )进行全面了解,收集用户对 DB的以下需求,以数据流程图和 DD
等书面形式确定下来。
① 信息需求,系统用到的所有的信息及其联系
② 处理需求,未来系统对数据进行什么样的处理
③ 安全性需求,对存放的信息的安全保密要求
④ 完整性需求,数据应满足怎样的约束条件
① 确定系统范围 。
② 确定用户对未来系统的各种要求,包括信息要求、处理要求、安全性和完整性要求。
③ 深入分析用户的业务处理,用数据流程图表达整个系统的数据的流向和对数据进行的处理,描述数据与处理间的关系 。
④ 分析系统数据,产生数据字典 DD,以描述数据流程图中涉及的各数据项、数据结构、数据流、数据存储和处理等。
⑵ 工作

2.高校管理系统的信息需求
⑴ 教学管理子系统的信息需求
⑵ 工资及福利管理子系统
⑴ 教学管理子系统的信息需求
管理对象与存储信息:
①学生,学号,姓名、性别、年龄等。
②班级,班级号,班级名、人数等。
③教师,教师号,姓名、性别、职称,E-mail地址 (同一教师可有多个 E-mail地址 )、电话号码和家庭地址 (城市、区、街道、
邮政编码 )等。
④课程,课程号、课程名、学分、周学时、课程类型 (周数 )等。
⑤专业,专业号、专业名、选修门数等。
⑥系,系号、系名等。

分析课程,课程号、课程名、学分、周学时、课程类型 (周数 )等。
其中:
课程类型,共同限选课、专业选修课 (选修人数上限、人数下限 )
或必修课 (课程负责人 ) 。
共同限选课,不分专业、面向全校学生的选修课。
专业选修课,面向本专业学生的选修课,某一专业的学生只能选修自己专业的专业选修课。每个专业都规定了学生可以选修的专业选修课的门数,不同专业所规定的选修课门数是不同的。
教学管理子系统中各对象间的联系,
① 每个 学生 都 属于 一个 班级,而一个班级可以有多个学生;
② 每个 班级 属于 一个 专业,一个专业可以有多个班级;
③ 一个 专业 属于 一个 系,一个系可以有多个专业;
④ 一个 教师 属于 一个 系,一个系可以有多个教师;
⑤ 每个 教师 可 教授 多门 课程,同一门课程可有不同的教师教授。
但同一教师不能重复教授某门课程,教师在固定的时间和教室教授某门具体课程;
⑥ 每个 学生 可 修读 若干门 课程 (选修课或必修课 ),每门课程可有多个学生修读。对任何课程学生都可申请免修不免考;
⑦ 某个具体的 学生 参加某门 课程 的学习,应有一个固定的 教师 。
主要负责管理教师的工资、岗位津贴、养老金、公积金、课时奖金、住房贷款以及医疗费报销等。
管理对象与存储信息:
① 教师,教师编号、姓名、性别、工龄、职称、基本工资、养老金、公积金等。
② 课程,包括课程号、课程名、总课时等。
③ 职称,包括职称号、职称名、岗位津贴和住房贷款额等。
④ 被赡养人,包括姓名以及与教师的关系等。学校负责为被赡养人报销医药费。

⑵ 工资及福利管理子系统
工资及福利管理子系统中各对象间的联系:
① 一个教师的被赡养人可有多个,而一个被赡养人仅被一个教师赡养。如果,夫妻双方都在学校工作,他们的被赡养人信息只能挂靠在其中某一人上;
② 每个教师可教授多门课程,同一门课程可以有不同的教师教授,但同一个教师不能教授两门相同的课程。并假设教师在每个学期末都要接受学生的评估,而教师的课时奖金与评教等级有关;
③ 每个教师当前被聘任的职称是惟一的,而不同的教师可被聘同一职称。
二,概念结构设计
1.局部 E-R模型的设计
2.全局 E-R模型的设计
教师电话号码
e-mail地址性别姓名教师号职称家庭地址城市 街道区 邮政编码教学管理子系统课程课程名学分课程号周学时课程类型周数类型号类型名
( 1).确定实体集和属性
作为属性的事物应符合的原则:
① 除了复合属性,其他属性都不能具有需要描述的特性。
② 属性不能与其它实体发生联系。
符合上述原则的事物应作为属性,其余的应作为实体。
E-mail,多值属性家庭地址,复合属性教授课程
n
m
教师时间教室号
( 2)确定实体集间的联系
1.局部 E-R模型的设计
⑴ 局部 E-R模型的设计步骤
⑵ 设计教学管理子系统的 E-R模型
⑶ 设计工资及福利管理子系统的 E-R模型
⑴ 局部 E-R模型的设计步骤
需求分析结果确定局部结构的范围还有局部结构要设计?
全局
E-R
模型的设计有无设计局部 E-R模型确定局部结构的实体定义局部结构的属性定义局部结构的联系如何抽象实体和属性
– 实体,现实世界中一组具有某些共同特性和行为的对象就可以抽象为一个实体。对象和实体之间是,is member of”的关系。
例:在学校环境中,可把张三、李四等对象抽象为学生实体。
– 属性,对象类型的组成成分可以抽象为实体的属性。组成成分与对象类型之间是,is part of”的关系。
例:学号、姓名、专业、年级等可以抽象为学生实体的属性。其中学号为标识学生实体的码。
确定实体集和属性教师电话号码
e-mail地址性别姓名教师号职称家庭地址城市 街道区 邮政编码教学管理子系统课程课程名学分课程号周学时课程类型周数类型号类型名确定实体集和属性
① 除了复合属性,其他属性都不能具有需要描述的特性。
② 属性不能与其它实体发生联系。
符合上述原则的事物应作为属性,其余的应作为实体。
E-mail,多值属性家庭地址,复合属性作为属性的事物应符合的原则:
教授课程
n
m
教师时间教室号确定实体集间的联系
⑵ 设计教学管理子系统的 E-R模型
⑶ 设计工资及福利管理子系统的 E-R模型
2.全局 E-R模型的设计
全局 E-R模型的设计过程
⑴ 合并局部 E-R模型
⑵ 消除冗余数据和冗余联系
⑶ 例
局部
E-R
模型合并两个局部
E-R
模型检查并消除冲突检查并消除冗余逻 辑结构设计无有无还有未合并的局部 E-R
模型吗?
还有冲突吗?
还有冗余吗? 无有 有请按键 ★
依次取出所有的局部 E-R模型,进行合并,直至所有的局部 E-R模型都合并完为止。在合并过程中要检查并消除局部 E-R模型间的一些冲突。
冲突的种类:
① 属性冲突
② 命名冲突
③ 结构冲突
⑴ 合并局部 E-R模型
① 属性冲突包括属性域冲突和属性取值单位的冲突。
属性域的冲突:
指同一属性在不同局部 E-R模型中有不同数据类型、
取值范围或取值集合。
② 命名冲突同名异义:
是指具有不同意义的对象在不同的局部 E-R 模型中却使用了相同的名字。
异名同义:
是指具有同一意义的对象在不同的局部 E-R 模型中却使用了不同的名字。
③ 结构冲突
同一对象在不同的局部 E-R模型中具有不同的抽象
如:课程实体中有课程类型属性,课程类型又作为另一实体。应
同一实体在不同的局部 E-R模型中包含不同的属性个数和排列次序
实体间的联系在不同的局部 E-R模型中具有不同的类型。
⑵ 消除冗余数据和冗余联系检查合并后的 E-R模型中有无冗余数据和冗余联系,
如有则根据实际情况消除之。
教学管理与工资及福利管理子系统中,教师的职工号存在命名冲突; 教师实体存在结构冲突。
⑶ 例

教师实体存在命名冲突与结构冲突,进行统一与合并。
教师教师号工龄养老金公积金 基本工资家庭地址城市街道区邮政编码统一与合并后教师电话号码
e-mail地址性别姓名教师号职称家庭地址城市 街道区 邮政编码教学管理子系统教师教师编号 姓名 性别 工龄公积金 养老金 基本工资工资及福利子系统
e-mail地址性别姓名电话号码
请按键 ★
课程实体存在结构冲突,进行合并
课程课程名学分课程号周学时课程课程名课程号总课时教学管理子系统工资及福利子系统合并后课程类型周数类型号类型名分类1 n
课程课程名学分课程号周学时请按键 ★
教授联系 的合并
教学管理子系统工资及福利子系统教授课程
n
m
教师时间教室号时间评教等级教授课程
n
m
教师时间教室号评教等级教授课程
n
m
教师合并后请按键 ★
课程、教师和学生实体及相互之间的联系
将“教授”和“上课”联系和并为如下的“教授” (冗余 )
请按键 ★
合并后生成的全局 E-R模型
三、逻辑结构设计
⑴ 任务
⑵ 考虑因素
⑶ RDBMS产品的逻辑结构设计
⑷ 逻辑结构的设计过程
⑸ 全局 E-R模型转换成初始关系模型的规则
⑴ 任务
根据 E-R模型和需求分析所产生的文档,并综合考虑所选择的具体 DBMS的特点,设计出整个 DB的逻辑结构。
⑵ 考虑因素
包括 DBMS产品的性能和价格,以及所设计的应用系统的功能复杂程度。
⑶ RDBMS产品的逻辑结构设计
指设计 DB中所应包含的各个关系模式的结构,包括各关系模式的名称、每一关系模式中各属性的名称、数据类型、
取值范围等内容。
⑷ 逻辑结构的设计过程
需求分析文档、
全局 E-R模型、
具体 DBMS的特性设计初始关系模型取出一关系模式,并对其进行评价还有未 被评价的模式吗?
模式 合理吗?
关系模式的规范化否关系模型的反规范化无是有请按键 ★
⑸ 全局 E-R模型转换成初始关系模型的规则
① E-R模型中的一个常规实体集转换为一个关系模式
② E-R模型中的多值属性转换为一个关系模式
③ E-R模型中的一个联系转换为一个关系模式
④ 根据实际情况,将具有相同键的关系模式合并
① E-R模型中的一个常规实体集转换为一个关系模式该关系模式的属性由原实体集中的各属性组成,关系模式的 关键字也就是原实体集的关键字 。
班级 (班级号,班级名,人数 )
学生 (学号,姓名,性别,年龄 )
职称 (职称号,职称名,岗位津贴,住房贷款额 )
课程类型 (类型号,类型名,周数 )
专业 (专业号,专业名,选修门数 )
系 (系号,系名 )
② E-R模型中的多值属性转换为一个关系模式该关系模式的属性由 多值属性 及其 相应实体的关键字 组成。
教师实体集中的 E-mail地址属性转换成的关系模式如下:
Email( 教师号,E-mail地址 )
教师电话号码
e-mail地址性别姓名教师号职称家庭地址城市 街道区 邮政编码教学管理子系统该关系模式的属性由与该联系相连的各实体集的键和联系的属性组成,该关系模式的键则应根据实体集间的联系的不同类型分别考虑。
1:1联系,与该联系相连的 各实体集的关键字均可 作关系模式的关键字;
1:n联系,关系模式的关键字应是 n 端实体集的关键字 ;
m:n联系,关系模式的关键字由与该联系相连的 各实体集的关键字组成 。

③ E-R模型中一个联系转换为一个关系模式
分类( 课程号,类型号)
考试( 学生号,课程号,成绩)
班级 (班级号,班级名,人数 )
包括 (班级号,专业号 )
关系模式合并为,班级 (班级号,班级名,人数,专业号 )
学生 (学号,姓名,性别,年龄 )
属于 (学号,班级号 )
关系模式合并为,学生 (学号,姓名,性别,年龄,班级号 )

④ 根据实际情况,将具有相同键的关系模式合并四,物理设计
物理设计,指为给定的一个逻辑数据模型选择最适合应用环境的物理结构。
RDB的 物理结构,指数据的 存取方法 和 存储结构 。
数据库物理设计的步骤:
1,确定 DB的物理结构
2.评价物理结构数据库物理设计的步骤数据库物理设计确定数据库的物理结构评价数据库的物理结构逻辑结构设计数据库实施物理模型逻辑模型
⑴ 设计人员必须了解的问题
① 详细了解给定的 DBMS的功能和特点,特别是该 DBMS所提供的物理环境和功能。
② 熟悉 应用环境,了解所设计的应用系统中各部分的重要程度、处理频率、对响应时间的要求,并把它们作为物理设计过程中平衡时间和空间效率时的依据。
③ 了解 外存设备的特性,如分块原则、块因子大小的规定、
设备的 I/O特性等等。
① 确定数据的存储结构。 需 考虑存取时间、空间效率和维护代价间的平衡 。如在引入冗余数据以加快存取速度时应兼顾系统的空间效率。
②选择合适的存取路径。 如确定该为哪些关系模式 建立索引,
索引关键字是什么等等。
③确定数据的存放位置。 如确定数据存放在一个磁盘上还是多个磁盘上,什么数据应存放在高速存储器上,什么应存放在低速存储器上等。
④确定存取分布。 许多 DBMS都提供了一些存储分配参数供设计者使用。如缓冲区的大小和个数、块的长度、块因子的大小等等。设计者必须规定其中的一些参数的设置。
⑵ 物理设计的内容例 1:假设学生关系按所在系建有索引,现在要查询信息系的所有学生名单 。
信息系的 500名学生分布在 500个不同的物理块上时,至少要执行
500次 I/O操作。
如果将同一系的学生元组集中存放,则每读一个物理块可得到多个满足查询条件的元组,从而显著地减少了访问磁盘的次数。
例 2,CREATE CLUSTER INDEX Stusname ON Student(Sname);
在 Student表的 Sname( 姓名 ) 列上建立一个聚簇索引,而且 Student
表中的记录将按照 Sname值的升序存放例 3:假设用户经常要按系别查询学生成绩单,这一查询涉及学生关系和选修关系的连接操作,即需要按学号连接这两个关系,为提高连接操作的效率,可以把具有相同学号值的学生元组和选修元组在物理上聚簇在一起。这就相当于把多个关系按,预连接,的形式存放,从而大大提高连接操作的效率。
举例说明五,数据库实施
数据库实施的工作内容
– 定义数据库结构
– 组织数据入库
– 编制与调试应用程序
– 数据库试运行
数据库实施定义数据库结构数据装载数据库试运行数据库物理设计 数据库运行和维护物理模型编制与调试应用程序数据库系统
⑴ 建立 DB的结构
利用给定的 DBMS所提供的命令,建立 DB的模式、外模式和内模式。
对 RDB来说,就是 创建 DB、建立 DB中所包含的各个基本表、视图、索引等等 。
例,定义表结构:
接下来是在这些基本表上定义视图:
如果需要使用聚簇,在建基本表之前,应先用 CREATE CLUSTER语句定义聚族。
CREATE VIEW,...
(
……………
);
CREATE TABLE 学生
(学号 CHAR(8),
……………
);
必须将分散在各个不同部门的数据抽取出来,输入计算机,并经过分类转换,使它们的结构与新系统 DB的结构一致,然后才能输入到 DB中去。
程序调试时需要将少部分的、适合程序调试用的数据装入到 DB,系统运行正常后则需要将所有的原始数据装入到 DB。
⑵ 将原始数据装入 DB
⑶ 应用程序的编制调试
与数据载入同时进行的工作是应用程序的编制和调试。
( 4) DB的试运行
应用程序调试完成,并且已有一小部分数据入库后,就可以开始数据库的试运行。
数据库试运行也称为联合调试,其主要工作包括:
1) 功能测试,实际运行应用程序,执行对数据库的各种操作,
测试应用程序的各种功能。
2) 性能测试,测量系统的性能指标,分析是否符合设计目标。
(原因,应用程序,修改应用程序的源代码; DB结构不合理:
修改物理结构或逻辑结构 )。
应经常对 DB中的数据进行备份 (该阶段,系统很不稳定,容易给
DB中的数据造成破坏 )。
六,数据库运行和维护
DBS投入运行后,由 DBA对 DBD进行经常性的维护工作。
⑴ DB的转储和恢复 定期对 DB进行备份
⑵ DB的安全性和完整性控制 应根据实际情况调整
⑶ DB性能的监督、分析和改造 进行分析,不断改进
⑷ DB的重组织与重构造 更新操作、应用环境变化
数据库设计 小结
数据库的设计过程
– 需求分析
– 概念结构设计
– 逻辑结构设计
– 物理设计
– 实施
– 运行维护设计过程中往往还会有许多反复。
小结(续)
数据库各级模式的形成
– 数据库的各级模式是在设计过程中逐步形成的
– 需求分析 阶段综合各个用户的 应用需求 (信息、处理、安全、完整)
– 概念设计阶段 形成独立于机器特点、独立于各个 DBMS产品的 概念模式
(信息世界模型),用 E-R图来描述。
– 在 逻辑设计阶段 将 E-R图转换成具体的数据库产品支持的数据模型如关系模型,形成数据库逻辑模式。然后根据用户处理的要求,安全性的考虑,在基本表的基础上再建立必要的视图( VIEW)形成数据的 外模式 。
– 在 物理设计阶段 根据 DBMS特点和处理的需要,进行物理存储安排,设计索引,形成数据库 内模式。
整个数据库设计过程体现了结构特征与行为特征的紧密结合。
小结(续)
目前很多 DBMS都提供了一些辅助工具( CASE工具),为加快数据库设计速度,设计人员可根据需要选用。
例如需求分析完成之后,设计人员可以使用 ORACLE DESIGNER 2000画 E-R图,
将 E-R图转换为关系数据模型,生成数据库结构;画数据流图,生成应用程序。
– 利用 CASE工具生成的仅仅是数据库应用系统的一个雏形,比较粗糙,数据库设计人员需要根据用户的应用需求进一步修改该雏形,使之成为一个完善的系统。
– 早期就选择某种 CASE工具固然能减少数据库设计的复杂性,加快数据库设计的速度,但往往容易将自己限制于某一个 DBMS上,而不是根据概念设计的结果选择合适的 DBMS。