2.1.1 数据库设计的步骤
一、什么是数据库设计
数据库设计(Database Design)是根据用户需求,以及 所选择的数据库管理系统,对某一具体应用系统,设计数 据库组织结构和构造的过程。 <br /> 从数据库应用系统开发人员的角度看: <br />数据库设计:是为给定的实际应用问题,选取数据库 系统、将用户的需求转化成有效的数据库模式,使之易于 适应用户数据需求的过程。 <br /> 从数据库理论的角度看: <br /> 数据库设计:是根据用户需求将现实世界的数据特征 抽象为概念模型,根据特定数据库管理系统的特点,构造 出最优的数据库模式,使之既能正确反映现实世界的信息 及其联系,又能满足用户各种应用需求的过程。
二、数据库设计重要性
数据库设计是进行数据库应用系统设计与开发的重要 环节,它决定数据库应用系统的底层设计,制约着整个系 统的成败,实际工作中常常因为数据库设计的不够完善改 动系统的需求,甚至严重的导致应用系统开发不下去,以 至于重新进行数据库设计。
三、数据库设计的一般步骤
(1)规划 (2)需求分析 (3)概念结构设计 (4)逻辑结构设计 (5)物理结构设计 (6)数据库实施 (7)数据库运行和维护 数据库设计的核心内容
四、各阶段的目标和任务
1. 规划阶段
目标: 提交通过评审的可行性分析报告。 任务: (1)系统调查 ; (2)可行性分析 ; (3)确立目标与方案 。
2. 需求分析阶段
目标: 对现实世界的对象进行详细调查,收集支持系统目标 的基础数据及其处理需求。 任务: (1)分析用户活动; (2)确定系统范围; (3)分析用户活动的数据流向; (4)了解业务系统数据需求。
3.概念结构设计阶段
目标: 在需求分析的基础上,提出概念模型。 任务: (1)进行数据抽象; (2)设计局部概念结构; (3)将局部概念结构转为全局概念结构; (4)优化全局概念结构。
4.逻辑结构设计阶段
目标: 在概念结构设计的基础上,将其转换为某个具体DBMS 支持的数据模型。 任务: (1)选定DBMS ; (2)将全局概念结构转换全局关系模式; (3)利用规范化原则对关系模式进行优化 。
5.物理结构设计阶段
目标: 为逻辑数据结构选取一个最适合应用环境的物理结构, 包括存储结构和存取方法等。 任务: (1)存储记录结构设计 ; (2)确定数据存放位置; (3)存取方法的设计 ; (4)完整性和安全性设计 。
6.数据库实施阶段
目标: 创建数据库。 任务: (1)定义数据库结构 ; (2)组织数据入库 ; (3)编制与调试应用程序; (4)数据库试运行; (5)功能测试 。
7.数据库运行和维护阶段
目标: 收集和登记数据库运行的情况记录,用于评价并改善 数据库系统的性能。 任务: (1)数据库的转储和恢复; (2)数据库安全性、完整性控制 ; (3)数据库性能的监督、分析和改进; (4)数据库的重组织和重构造。
2.1.2 需求分析
需求分析是数据库设计的初级阶段,是应用用户与专 业开发人员沟通的重要环节,它决定了系统的成败。
一、需求分析阶段目标
需求分析阶段目标: 是通过详细调查,深入了解需要解决的问题的数据的 性质和数据的使用情况,以及对数据库安全性和完整性的 要求,按一定规范要求写出设计者和用户都能理解的需求 分析文档。
二、需求分析的工作任务
需求分析阶段的任务 (1)分析用户活动,设计业务流程图; (2)了解系统范围,设计系统功能框图; (3)分析用户活动的数据流向,设计数据流图; (4)了解业务系统数据需求,设计数据字典。
三、需求分析的工作流程
四、需求分析调查方法
1.需求调查内容 2.需求调查方式 3.需求调查策略
1.需求调查内容
① 组织机构情况:各个组织机构的组成,职责,管理 工作适合计算机管理的内容。 ② 业务活动现状:各部门输入的数据,加工数据的方 法,处理结果去向,输入/输出数据的格式,以及需要存储 的数据。 ③ 外部要求:调查数据处理的响应时间、频度和发生 的规则,安全性及完整性要求。 ④ 未来规划:未来规划对数据的应用需求。
2.需求调查方式
① 个别交谈:仔细了解用户业务范围。 ② 开座谈会:获得业务之间的联系信息。 ③ 发调查表:获得设计人员关心的用户需求问题。 ④ 跟班作业:获得业务活动情况。 ⑤ 查阅记录:获得具体的业务细节。
3.需求调查策略
① 对高层负责人:个别交谈。 ② 对中层管理人员:开座谈会、个别交谈或发调查表、 查阅记录。 ③ 对基层业务人员:发调查表、个别交谈、跟班作业或召 开小型座谈会。
五、例:“英才大学学生信息管理系统”
“英才大学”学生信息管理中心,为加强学生信息化管理, 准备开发一个“英才大学学生信息管理系统” 。 该系统具有如下功能: 学生自然信息管理; 学生所学课程信息管理; 学生成绩信息管理。 (1)学生自然信息管理子系统: ①学 生:学号,姓名,性别,出生年月 籍贯,班级编号。 ②所在班级:班级编号,班级名称, 班级人数,班长姓名,专业名称。 ③所在系: 系编号,系名称,系主任 电话,教研室个数,班级个数。 ④所在学院:学院编号,学院名称 院长姓名,电话,地址。 (2)学生所学课程信息管理子系统: ①所修课程: 课程编号,课程名称,学时,学分,学期。 ②授课教师: 教师编号,姓名,性别,职称。 ③教师所在教研室: 教研室编号,教研室名称,教师人数。 (3)学生成绩信息管理子系统: 成绩:学号,课程编号,成绩。 业务流程图
系统功能框图
2.1.3 概念结构设计
数据库概念结构设计,是在需求分析的基础上,通过 对用户需求进行分析、归纳、抽象,形成概念模型的过程。
一、概念结构设计的目标
概念结构设计目标:是利用需求分析结果,设计抽象 反映用户需求信息和信息处理需求的概念模型。 概念模型独立于特定的数据库管理系统,也独立于数 据库逻辑模型,还独立于数据库物理模型。 概念模型用E-R法描述,由此也将概念模型称为实体联系模型,或称E-R模型。
二、概念结构设计的任务
概念结构设计的任务: (1)进行数据抽象(定义实体、抽象实体型); (2)设计局部概念模型 (局部E–R图); (3)将局部概念模型综合成全局概念模型(全局E– R图); (4)评价和优化全局概念模型(优化的全局E–R 图)。
三、概念结构设计方法
1.集中式设计法
根据用户需求,由一个统一的机构或人员设计出数据 库的全局概念模型。 特点: 简单方便,容易保证概念模型的统一性与一致性; 大型的或语义关联复杂并不适用。
2.分散-集成设计法
设计过程分解成两步,首先将一个组织或部门的用户 需求,根据某种原则将其分解成若干个部分,并对每个部 分设计局部概念模型,然后将各个局部概念模型进行集成, 并消除集成过程中可能会出现的冲突,最终形成一个全局 概念模型。 特点: 能较好地反映用户需求; 对大型和复杂关联系的系统比较有效; 工作过程复杂,统一性差。
四、概念结构设计步骤
概念结构设计主要步骤: (1)设计局部概念模型; (2)将局部概念模型集成为全局概念模型; (3)对全局概念模型进行优化。 概念结构设计步骤示意图
五、例:“英才大学的学生信息管理系统” 概念模型
第一步:局部概念设计 (1)确定局部概念模型的范围; (2) 定义实体型; (3)定义联系。
第二步:合并局部概念模型 合并局部概念模型分成步骤: (1)区分公共实体型 ; (2)合并概念模型; (3)消除冲突。
第三步:优化全局概念模型 全局概念模型的优化标准: 能全面、准确地反映用户需求,且具有实体型的个数 尽可能少;实体型所含属性个数尽可能少;实体型之间联 系无冗余等特点。 英才大学的学生信息管理系统全局概念模型
在概念结构设计时,我们通常采用“自上而下”的方 法,从客观现实的整体出发,用系统的眼光从结构和功能 上来把握系统。 我们可基于系统功能和用户需求,采用聚类和概括的 方法抽象实体模型,通过各类实体间的联系描述完整的系 统。
2.1.4 逻辑模型设计
数据库逻辑结构设计是在概念模型的基础上进行的,是 把概念模型转换成某个数据库管理系统支持的数据模型。
一、逻辑结构设计目标
逻辑结构设计目标: 是在概念结构设计的基础上,遵循一定的规则,将概念 模型转换为满足某个具体DBMS支持数学模型特性的、且经 过优化的逻辑结构。
二、逻辑结构设计的任务
逻辑结构设计的具体工作任务: (1)选定DBMS ; (2)将概念模式转换DBMS 支持的全局关系模式; (3)利用关系规范化原则优化全局关系模式; (4)确定关系的完整性的约束。
三、逻辑结构设计方法
1.E-R图向关系模型的转换
2.概念模型转换成逻辑结构的原则
(1)实体型的转换
概念模型中的每个实体型,将有一个关系模式与之对应, 使该关系模式包含实体型的所有属性。 <br />通常用下划线来表示关系模式的主码所包含的属性。 <br /> 例:有一个“学生”实体型 <br />![image.png](https://img-blog.csdnimg.cn/img_convert/e894084eaff11613b0be584a335e5fa5.png#clientId=ud46f37c3-e524-4&from=paste&height=127&id=u033169fa&name=image.png&originHeight=118&originWidth=377&originalType=binary&ratio=1&size=13431&status=done&style=none&taskId=ube10317a-1d59-4f67-a863-e1fbf938732&width=405.5)<br /> 概念模型转换关系模式的结果:<br /> 学生(学号,姓名,性别,出生日期
(2)联系的转换
1:1联系的转换:先将两个实体型分别转换为两个对应的 关系模式,再保证两个关系中具有相同属性的主码。 例:有“班级”和“班长”两个实体型
概念模型转换关系模式的结果: 班级(班级编号,班级名称,班级人数 ) 班长(班级编号,班长姓名) 1:n联系的转换:先将两个实体型分别转换为两个对 应的关系模式,再将1端对应关系模式的主码属性加入到n 端对应的关系模式中。 例:有“系”和“班级” 两个实体型
概念模型转换关系模式的结果: 系(系编号,系名称,系主任) 班级(班级编号,班级名称,班级人数 ,系编号) m:n联系的转换:先将两个实体型分别转换为两个对应的关 系模式,再将联系转换为一个对应的新关系模式,其属性由联 系的属性和前面两个关系模式的主码属性构成。 例:有“课程”和“学生” 两个实体型
概念模型转换关系模式的结果: 课程(课程编号,课程名,学时,学分) 学生(学号,姓名,性别,出生日期) 成绩(课程编号,学号,成绩)
四、关系模式的优化
优化关系模式的方法: (1) 确定数据依赖,按需求分析阶段所得到的语义, 分别写出每个关系模式内部各属性之间的数据依赖以及不同 关系模式属性之间数据依赖。 (2)消除冗余的联系,对于各个关系模式之间的数据依 赖进行极小化处理,消除冗余的联系。 (3) 确定所属范式:根据数据依赖的理论对关系模 式逐一进行分析,确定各关系模式分别属于第几范式。 (4) 数据处理得是否合适:根据需求分析阶段得到 数据处理的要求,分析这些关系模式是否合适,若不合 适对其进行合并或分解。
五、逻辑结构设计步骤
六、例:“英才大学的学生信息管理系统”逻辑结构
2.1.5 物理结构设计
数据库物理结构设计阶段是针对一个给定的数据库关系 模式,选择最适合的应用环境。 换句话说,数据库物理结构设计是能够在应用环境中, 由全局关系模式产生一个能在特定的DBMS上实现的关系数据库结构。
一、物理结构设计目标
物理结构设计目标:是为逻辑数据结构选取一个最适合应用 环境的物理结构,包括存储结构和存取方法等。
二、物理结构设计的工作任务
物理结构设计的具体工作: (1)存储记录结构设计; (2)确定数据存放位置; (3)存取方法的设计; (4)完整性和安全性考虑。
三、物理结构设计方法
1.确定数据库的物理结构
一个关系数据库由多个关系组成,一个关系对应一个数据表( 简称表)。 表的构成: 记录( Record ):表中的一行即为一个记录。 字段(Filed):表中的一列即为一个字段。 关键字(Key):表中的某个属性或属性组,标识一个记录。 关系模式与表结构间的关系: 学生(学号,姓名,性别,出生年月,籍贯 )
关系模型与物理模型的对应关系
2.定义表的结构:
表中各个字段的属性及约束条件 逻辑结构(关系模式): 学生(学号,姓名,性别,出生年月,籍贯,班级编号) 物理结构:
四、物理结构设计步骤
五、物理结构设计注意问题
(1)确定数据的存储结构 (2)选择合适的存取路径 (3)确定数据的存放位置 (4)确定存取分布 。 数据库组织: 概念结构 逻辑结构 物理结构
2.2 数据库创建
在数据库管理系统中,有不同种类的存储特 定信息并支持特定功能的数据库对象。 数据库对象主要包括:表、视图、索引、约 束、存储过程和触发器等。
表
表是由行、列组成的数据集合,是进行数据存储 的最基本的数据源。<br /> 在关系模型中,现实世界的实体以及实体间的各 种联系均用二维表来表示,可以分为三类表:<br /> 基本表或基表:实际存储数据的表;<br /> 查询表:查询结果对应的表;<br /> 视图表:由基本表或其他视图表导出的表,是虚 表,不对应实际存储的数据。
视图
视图是由表或其他视图组成的数据集合,也 可作为其他数据库对象的数据源。 视图可以被看成是虚拟表或存储查询,数据 库内存储的是视图定义,基本表的数据变化自 动反映到视图中。 对视图的查询与修改要转换成对基本表的相应操作,操作方式与对基本表一样。
索引
索引为数据快速检索提供支持,并可作为其他数据 库对象的数据源。 索引是依赖于表的,它提供了数据库中编排表中数 据的内部方法。 SQL Server的索引又可以分为簇索引和非簇索引。 簇索引的叶结点存储实际的数据,因为表的数据行只能以一种排序方式存储在磁盘上,所以一个表只能有 一个簇索引。非簇索引叶结点存储的是指针,一个表可以建立多个非簇索引。
约束
用于为表中的字段定义完整性的规则 目前商用的DBMS产品都支持完整性控制。 即完整性定义和检查控制由DBMS实现,不必由 应用程序来完成,从而减轻了应用程序员的负 担,同时为所有用户和应用提供了一致的数据 库完整性。
存储过程
存储过程是存放于服务器的预先编译好的一 组T-SQL语句。 存储在数据库中,用户可以通过指定存储过 程的名字并给出参数来执行它。 又可以分为系统存储过程和用户自定义存储 过程两类。
触发器
是特殊的存储过程,当用户表中数据改变时, 该存储过程被自动执行。 触发器必须创建在一个特定的表上,并存储 在数据库中;如果对一个表上的某种操作(如 插入、更新或删除)定义了触发器,则该操作 发生时触发器自动触发; 与存储过程不同,触发器不能被直接调用, 也不能传递或接收参数。
创建数据库
创建数据库的过程实际上是定义数据库的名 称、大小、所有者和存储数据库的文件。 在数据库管理系统中,不是所有的数据库用 户都能够创建数据库,只有系统管理员能够创 建数据库。
数据库的存储结构
数据库文件 存放数据库数据和数据库对象的文件。 一个数据库文件只属于一个数据库。 数据库文件组 文件组允许多个数据库文件组成一个组, 并对它们整体进行管理。
数据库文件
主数据库文件(Primary Database file) 存放数据, 每个数据库都必须有一个主数据库文件。 次数据库文件(Secondary Database File) 存放数据,一个数据库可以没有也可以有多个次数据库文件。 事务日志文件(Transcation Log File) 用来记录数据库更新操作。
数据库文件组
为了便于分配和管理,SQL Server允许将多 个文件归纳为同一组,并赋予此组一个名称, 这就是文件组。 文件组分为主文件组(Primary File Group)和次 文件组(Secondary File Group)。
创建数据库两种方式
使用“设计器”创建
使用SQL语句创建
例题
设已经在e盘建立了两个文件夹:e:\sql_data 和e:\sql_log,分别用来存放数据库文件和事务 日志文件,使用CREATE DATABASE语句创建 一个company数据库
|