一、数据库设计简介
按照规范设计,将数据库
的设计过程分为六个阶段:
A、系统
需求分析阶段
B、概念结构设计阶段
C、逻辑结构设计阶段
D、物理结构设计阶段
E、数据库实施阶段
F、数据库运行与维护阶段
需求分析和概念结构设计独立于任何数据库管理系统。
二、系统需求分析
1、需求分析的任务
需求分析的任务:对现实世界要处理的对象进行详细的调查,通过对原系统的了解,收集支持新系统的基础数据并对其进行处理,在此基础上确定新系统的功能。
A、调查分析用户活动
B、收集和分析需求数据,确定系统边界信息需求,处理需求,安全性和完整性需求
C、编写系统分析报告
2、需求分析的方法
需求分析有两种方法:自顶向下、自底向上
A、自顶向下
自顶向下方法从最上层的系统组织机构入手,采用逐层分解的方式分析系统。
用数据流图和数据字典描述系统
数据流图:描述输入数据到输出数据的变换过程
数据流:由一组固定成分的数据组成,代表数据的流动方向
处理:描述了输入数据到输出数据的变换
文件:用于存储数据
源或宿:存在于系统之外的人员或组织,表示系统输入数据的来源和输出数据的去向
B、自底向上
3、实例
教学管理系统
基本需求:
某学校设计学校教学管理系统,学生实体包括学号、姓名、性别、生日、民族、籍贯、简历、入学日期,每名学生选择一个主修专业,专业包括专业编号、名称、类别,一个专业属于一个学院,一个学院可以有多个专业。学院信息要存储学院号、学院名、院长。教学管理要管理课程表、学生成绩表。课程包括课程号、课程名、学分,每门课程由一个学院开设。学生选修的每门课程获得一个成绩。
三、概念结构设计
1、概念结构设计简介
概念结构设计的目标是设计数据库的E-R模型图,确认需求信息的正确和完整。具体来说就是从需求分析中找到实体,确认实体的属性、确认实体的关系,画出ER图。
2、概念结构设计的步骤
第一步,数据抽象与局部E-R模型设计
A、数据抽象
在多层数据流中选择一个适当层次作为设计E-R图的出发点。
确定每个局部应用包含哪些实体,实体包含哪些属性,实体之间的联系
划分实体和属性的方法
分类:将一组具有某些共同特性和行为的对象抽象为一个实体。
聚合:将对象类型的组成成分抽象为属性。
B、局部E-R模型设计
局部E-R模型设计的原则是属性必须是不可分的数据项,不能再由放弃其他属性组成;属性不能与其他实体具有联系,联系只能发生在实体之间。
为简化E-R图,凡是能作为属性对待的,尽量作为属性。
第二步,全局E-R模型设计
集成各局部E-R模型,形成全局模型。视图集成的方法有两种:
A、多元集成法:一次性将多个局部E-R图合并为一个全局E-R图。
B、二元集成法:首先集成两个重要的局部E-R图,然后用累加的方法逐步将一个新的E-R图集成进来。
合并:
合并局部E-R图,消除冲突,初步生成E-R图。合并的关键是合理消除各局部E-R图的冲突。
冲突分类如下:
优化:
消除初步E-R图中不必要的冗余,生成基本的E-R图。
冗余数据:可由基本的数据导出的数据。
冗余联系:可由基本的联系导出的联系。
3、实例
教学管理系统的E-R图
实体:学生、专业、学院、课程
实体表要记录的属性:
学生(学号、姓名、性别、生日、籍贯、民族、简历、入学日期)
专业(专业号、专业名称、类别)
学院(学院号、学院名称、院长)
课程(课程号、课程名称、学分)
教学管理ER图:
四、逻辑结构设计
1、逻辑结构设计简介
逻辑结构设计的任务是将概念结构设计阶段完成的实体模型转换成特定的DBMS所支持的数据模型的过程。逻辑结构设计的目的是将E-R图中的实体、属性和联系转换成为关系模式。
2、初始关系模型设计
(1)实体间关系转换遵循的原则:
一个实体转换为一个关系模式,实体的属性就是关系的属性,实体的键就是关系的键。
一个联系转换为一个关系模式,与该联系相连的各实体的键以及联系的属性均转换为该关系的属性。
联系关系的键有三种情况:
如果联系为1:1,则每个实体的键都是关系的候选键
如果联系为1:n,zen端实体的见识关系的键
如果联系为n:m,则各实体的键的组合是关系的键
特殊情况:多元联系
多元联系在转换为关系模式时,与该多元联系相连的各实体的主键及联系本身的属性均转换为关系的属性,转换后所得到的的关系的主键为各实体键的组合
(2)实体间关系的转换规则:
A、一个1:1关系可以转换为一个独立的关系模式,也可以与任意一端所对应的关系模式合并。
原实体对应关系模式分别为:
班级(班号,专业,人数)
班长(学号,姓名,专长)
将关系“管理”合并到实体“班级”对应的模式后为:
班级(班号,专业,人数,班长学号)
班长(学号,姓名,专长)
关系“管理”也可以合并到实体“班长”对应的模式,将关系“管理”合并到实体“班级”对应的模式后为:
班级(班号,专业,人数)
班长(学号,姓名,专长,班号)
B、一个1:n关系可以转换为一个独立的关系模式,也可以与n端所对应的关系模式合并。
实体对应的关系模式
系(系号,系名,系主任,电话)
教师(教师号,姓名,专业,职称,性别,年龄)
关系对应的关系模式
管理(教师号,系号)
合并到实体“教师”后(只能合并到“多”的一端的关系模型):
教师(教师号,姓名,专业,职称,性别,年龄,系号)
C、一个m:n关系转换为一个关系模式。转换的方法为:与该关系相连的各实体的码以及关系本身的属性均转换为关系的属性,新关系的码为两个相连实体码的组合。
关系只能转换为独立模式,模式的属性由关系本身的属性及两个实体的键构成;主键由两端实体的键组合而成。
课程(课程号,课程名,学时,类别) 实体表
学生(学号,姓名,性别,专业,出生日期,照片) 实体表
选修(学号,课程号,分数) 关系表
D、三个或三个以上实体间的多元关系转换为一个关系模式。
关系的属性:与该多元关系相连的各实体的码以及关系本身的属性
关系的码:各实体码的组合
“讲授”关系是一个三元关系,可以转换为如下关系模式,其中课程号、职工号和书号为关系的组合码:
讲授(课程号,职工号,书号)
3、关系模式规范化
应用数据库设计的范式理论对初始关系模型进行优化。数据库设计的三大范式如下:
第一范式 每一个分类必须是一个不可分的数据项。属性不可再分,确保每列的原子性。
第二范式 要求每个表只描述一件事情,每条记录有唯一标识列。
第三范式 数据库表中不包含已在其它表中已包含的非主关键字信息。
关系模式的规范化过程如下:
A、确定范式级别
考察关系模式的函数依赖关系,确定范式等级。
B、实施规范化处理
利用规范化方法和理论将关系模式规范化。
C、模式改进
合并:
将用于关联查询的具有相同主键的各表合并可提高查询效率
分解:
水平分解,将关系的元组分为若干子集,提高查询效率;垂直分解,把关系中经常一起使用的属性分解出来,形成一个子关系,提高执行效率。分解时要保持无损连接和函数依赖。
4、实例
教学管理系统
由ER模型转化为的关系模型:
学生(学号、姓名、性别、生日、籍贯、民族、入学日期、专业号)实体表
专业(专业号、专业名称、类别、学院号)实体表
学院(学院号、学院名称、院长)实体表
课程(课程号、课程名称、学分、学院号)实体表
成绩表(学号、课程号、成绩)关系表
在转换为关系模型时,一对多的联系都在相应的多方实体的关系中增加一个外键。
需求的增加:
如果教学管理系统还要管理教师教学安排,教师包括编号、姓名、年龄、职称,一个教师只能属于一个学院,一名教师可以上若干门课程,一门课程可以有多名老师来上,每个教师所上的每门课都有一个课堂号和课时数。
教师实体的ER图:
教学管理系统ER图:
关系表 多对多
成绩表 (学号,课程号,成绩,时间,地点)
五、物理结构设计
1、物理结构设计简介
物理结构设计:对于给定的逻辑数据模型,选取一个最适合应用环境的物理结构。数据库的物理结构设计分为两步:
A、确定物理结构:存取方法和存储结构
B、评价物理结构:评价重点是时间和空间效率
根据具体的数据库管理系统所提供的多种存储结构和存取方法等依赖于具体计算机结构的各项物理设计措施,对具体的应用任务选定最合适的物理存储结构(数据类型 索引 主键)。
2、确定物理结构
(1)存储结构的设计
物理结构中,数据的基本存取单位是存储记录。
某一类型的所有存储记录的集合称为文件。
确定数据库存储结构时要综合考虑存取时间、存储空间利用率和维护代价三方面的因素。例如消除一切冗余数据虽然能够节约存储空间,但往往会导致检索代价的增加,因此必须进行权衡,选择一个折中方案。
(2)数据存取路径的设计
在关系数据库中,选择存取路径主要是指确定如何建立索引。例如,应把哪些域作为次码建立次索引,建立单码索引还是组合索引,建立多少个为合适,是否建立聚集索引等。
(3)数据存放位置的设计
为了提高性能,可将数据的易变部分、稳定部分、经常存取部分和存储频率较低部分分开存放。
(4)系统配置的设计
DBMS产品一般都提供了一些存储分配参数,供设计人员和DBA对数据库进行物理优化。初始情况下,系统都为这些变量赋予了合理的缺省值,但是这些值不一定适合每一种应用环境,在进行物理设计时,需要重新对这些变量赋值以改善系统的性能。
3、评价物理结构
物理结构设计过程中需要对时间效率、空间效率、维护代价和各种用户要求进行权衡,其结果可以产生多种方案,数据库设计人员必须对方案进行细致的评价,从中选择一个较优的方案作为数据库的物理结构。
评价物理数据库的方法完全依赖于所选用的DBMS,主要是从定量估算各种方案的存储空间、存取时间和维护代价入手,对估算结果进行权衡、比较,选择出一个较优的合理的物理结构。
4、实例
教学管理系统
表1-1 学院
字段名 | 类型 | 宽度 | 小数 | 主键/索引 | 参照表 | 约束 | Null值 |
学院号 | 文本型 | 2 | ↑(主) | ||||
学院 | 文本型 | 16 | |||||
院长 | 文本型 | 8 | √ |
表1-2 专业
字段名 | 类型 | 宽度 | 小数 | 主键/索引 | 参照表 | 约束 | Null值 |
专业号 | 文本型 | 4 | ↑(主) | ||||
专业 | 文本型 | 16 | |||||
专业类别 | 文本型 | 8 | ↑ | ||||
学院号 | 文本型 | 2 | 学院 |
表1-3 学生
字段名 | 类型 | 宽度 | 小数 | 主键/索引 | 参照表 | 约束 | Null值 |
学号 | 文本型 | 8 | ↑(主) | ||||
姓名 | 文本型 | 8 | |||||
性别 | 文本型 | 2 | 男 or 女 | ||||
生日 | 日期型 | ||||||
民族 | 文本型 | 6 | ↑ | ||||
籍贯 | 文本型 | 20 | |||||
专业号 | 文本型 | 6 | 专业 | √ | |||
简历 | 备注型 | √ | |||||
入学时间 | 日期型 | √ |
表1-4 课程
字段名 | 类型 | 宽度 | 小数 | 主键/索引 | 参照表 | 约束 | Null值 |
课程号 | 文本型 | 8 | ↑(主) | ||||
课程名 | 文本型 | 24 | |||||
学分 | 字节型 | ||||||
学院号 | 字符型 | 2 | 学院 |
表1-5 成绩单
字段名 | 类型 | 宽度 | 小数 | 主键/索引 | 参照表 | 约束 | Null值 |
学号 | 文本型 | 8 | ↑ | 学生 | |||
课程号 | 文本型 | 6 | ↑ | 课程 | |||
成绩 | 单精度 | 4 | 1 | >=0 and <=100 | √ |
六、数据库实施
1、数据库实施的过程
数据库实施:指根据逻辑设计和物理设计的结果,在计算机上建立起实际的数据库结构、装入数据、进行测试和试运行的过程。
2、实例
学生表:
学号 | 姓名 | 性别 | 生日 | 民族 | 籍贯 | 专业号 | 简历 | 登记照 |
06053113 | 唐李生 | 男 | 04/19/1987 | 汉 | 湖北省麻城 | 0501 | ||
07042219 | 黄耀 | 男 | 01/02/1989 | 汉 | 黑龙江省牡丹江市 | 0403 | ||
06041138 | 华美 | 女 | 11/09/1987 | 汉 | 河北省保定市 | 0403 | ||
07045120 | 刘权利 | 男 | 10/20/1989 | 回 | 湖北省武汉市 | 0403 | ||
08055117 | 王燕 | 女 | 08/02/1990 | 回 | 河南省安阳市 | 0501 | ||
08045142 | 郝明星 | 女 | 11/27/1989 | 满 | 辽宁省大连市 | 0403 | ||
08053101 | 高猛 | 男 | 02/03/1990 | 汉 | 湖北生黄石市 | 0501 | ||
08053124 | 多桑 | 男 | 10/26/1988 | 藏 | 西藏 | 0501 | ||
08053160 | 郭政强 | 男 | 06/10/1989 | 土家 | 湖南省吉首 | 0501 | ||
08053116 | 陆敏 | 女 | 03/18/1990 | 汉 | 广东省东莞 | 0501 | ||
08053131 | 林惠萍 | 女 | 12/04/1989 | 壮 | 广西省柳州市 | 0501 | ||
07093305 | 郑家谋 | 男 | 03/24/1988 | 汉 | 上海市 | 0904 | ||
07093342 | 罗家艳 | 女 | 05/16/1988 | 满 | 北京市 | 0904 | ||
07093325 | 史玉磊 | 男 | 09/11/1988 | 汉 | 湖北省孝感市 | 0904 | ||
07093317 | 凌晨 | 女 | 06/28/1988 | 汉 | 浙江省温州 | 0904 | ||
08041136 | 徐栋梁 | 男 | 12/20/1989 | 回 | 陕西咸阳 | 0403 | ||
08041127 | 巴朗 | 男 | 09/25/1989 | 蒙古 | 内蒙古 | 0403 |
课程表:
课程号 | 课程名 | 学分 | 学院号 |
09064049 | 高等数学 | 6.0 | 09 |
09065050 | 数据结构 | 4.0 | 09 |
02091010 | 大学语文 | 3.0 | 01 |
09006050 | 线性代数 | 3.0 | 09 |
01054010 | 大学英语 | 4.0 | 01 |
02000032 | 美术设计 | 2.0 | 02 |
09023040 | 运筹学 | 5.0 | 09 |
09061050 | 数据库及应用 | 3.0 | 09 |
05020030 | 管理学原理 | 3.0 | 05 |
05020051 | 市场营销学 | 3.0 | 05 |
04010002 | 法学概论 | 3.0 | 04 |
04020021 | 合同法实务 | 2.0 | 04 |
专业表:
专业号 | 专业 | 专业类别 | 学院号 |
0201 | 新闻学 | 人文 | 02 |
0301 | 金融学 | 经济学 | 03 |
0302 | 投资学 | 经济学 | 03 |
0403 | 国际法 | 法学 | 04 |
0501 | 工商管理 | 管理学 | 05 |
0503 | 市场营销 | 管理学 | 05 |
0602 | 会计学 | 管理学 | 06 |
0902 | 信息管理 | 管理学 | 09 |
0904 | 计算机科学 | 工学 | 09 |
学院表:
学院号 | 学院 | 院长 |
01 | 外国语学院 | 叶秋宜 |
02 | 人文学院 | 李容 |
03 | 金融学院 | 王汉生 |
04 | 法学院 | 乔亚 |
05 | 工商管理学院 | 张绪 |
06 | 会计学院 | 张一非 |
09 | 信息学院 | 杨新 |
成绩表:
学号 | 课程号 | 成绩 |
06053113 | 01054010 | 85 |
06053113 | 02091010 | 80 |
06053113 | 09064049 | 75 |
06053113 | 05020030 | 90 |
06053113 | 09061050 | 82 |
07042219 | 02091010 | 85 |
07042219 | 01054010 | 78 |
07042219 | 09061050 | 72 |
08055117 | 01054010 | 92 |
08055117 | 09064049 | 85 |
08055117 | 09061050 | 88 |
07093305 | 09064049 | 92 |
07093305 | 01054010 | 86 |
07093305 | 05020030 | 70 |
07093305 | 09065050 | 90 |
06041138 | 02091010 | 74 |
06041138 | 04010002 | 83 |
08053131 | 01054010 | 77 |
08053131 | 09061050 | 66 |
07093317 | 09064049 | 78 |
07093317 | 01054010 | 87 |
07093325 | 01054010 | 76 |
07093325 | 09065050 | 81 |
07093325 | 09064049 | 82 |
07093325 | 04010002 | 75 |
08041136 | 01054010 | 88 |
08041136 | 09061050 | 85 |
七、数据库运行与维护
数据库运行与维护的主要任务包括:
A、维护数据库的安全性与完整性
B、监测并改善数据库性能
C、重新组织和构造数据库
只有数据库系统在运行,就需要不断地进行修改、调整和维护。