560 likes | 665 Views
第 6 章 数据库的设计与维护. 6.1 概述 6.2 需求分析 6.3 概念结构设计 6.4 逻辑结构设计 6.5 物理设计 6.6 实现与维护 6.7 用 ORACLE 建立数据库 6.8 数据字典 (Data Dictionary). 数据库的设计步骤. 需求收集和分析 : 用户关心什么、用户要什么结果 设计概念结构: 存什么、关系(联系)如何、 E/R 图是各种数据模型的共同基础 设计逻辑结构: 用什么数据模型、数据库的模式( database schema )、用户子模式 设计物理结构: 数据怎么存、根据 DBMS 产品、环境特点
E N D
第6章 数据库的设计与维护 6.1 概述 6.2 需求分析 6.3 概念结构设计 6.4 逻辑结构设计 6.5 物理设计 6.6 实现与维护 6.7 用ORACLE建立数据库 6.8 数据字典(Data Dictionary)
数据库的设计步骤 • 需求收集和分析:用户关心什么、用户要什么结果 • 设计概念结构:存什么、关系(联系)如何、E/R图是各种数据模型的共同基础 • 设计逻辑结构:用什么数据模型、数据库的模式(database schema)、用户子模式 • 设计物理结构:数据怎么存、根据DBMS产品、环境特点 • 物理实现:运行DDL、装入测试数据、应用程序
6.1 概述--数据库的设计步骤 总体信息需求 第0步 规划 第1步 需求描述和分析 需求说明书 第2步 概念设计 信息结构 第3步 逻辑设计 逻辑数据库结构 (DBMS能处理的) 应用程序说明书 硬件和 OS特性 第4步 物理设计 物理数据结构 返回章
6.2 需求分析 6.2.1需求的收集 需求的分析整理 评审 6.2.2 数据字典 返回章
需求的分析处理 • 业务流程分析 :数据流图(DFD) • 分析结果的描述 • 除了DFD以外,还要用一些规范表格进行补充描述 查找分析 输出处理 输入处理 存储文件
评审 • 确认某一阶段的任务是否全部完成 • 保证设计质量 • 常常导致设计过程的回溯与反 返回节
数据字典 • 数据需求写成文档 • 对数据库数据描述的集中管理 • 存贮和检索元数据 返回节
6.3 概念结构设计 • 6.3.1 概念模型 • 6.3.2 概念设计的主要步骤 返回章
6.3.1 概念模型 • 概念模型 :表达概念设计结果的工具 • 概念模型 应具备的特征: • 有丰富的语义表达能力 • 易于交流和理解 • 易于变动 • 易于向各种数据模型转换 • ER模型 返回节
6.3.2 概念设计的主要步骤 • 进行数据抽象,设计局部概念模式 • 将局部概念模式综合成全局概念模式 • 评审
用ER方法进行数据库的概念设计 (1)设计局部ER模式 (2) 设计全局ER模式。 (3)全局ER模式的优化
设计局部ER模式 ① 确定局部结构范围 ② 实体定义 ③ 联系定义:映射基数、联系命名 ④ 属性分配
设计全局ER模式 局部ER模式综合成单一的全局概念结构 • 确定公共实体类型 • 局部ER模式的合并 • 消除冲突 :属性冲突 、结构冲突、命名冲突 • 全局ER模式的优化 • 实体类型的合并 • 冗余属性的消除 • 冗余联系的消除
例子:冗余联系的消除 返回节
6.4 逻辑结构设计 • 6.4.1逻辑设计环境 • 6.4.2关系数据库的逻辑设计 返回章
6.4.1逻辑设计环境 • 输入 • 独立于DBMS的概念模式 • 处理需求 • DBMS特性 • 输出 • DBMS可处理的模式 • 子模式 • 应用程序设计指南 • 物理设计指南 返回节
关系数据库的逻辑设计 1. 导出初始关系模式 • 一个实体类型转换成一个关系模式 • 一个联系类型转换成一个关系模式 2. 规范化处理 • 确定规范级别 :3NF或BCNF是适当的标准 • 实施规范化处理 3. 模式评价 • 功能评价 • 性能评价 返回节
6.5 物理设计 逻辑数据库结构 物理数据库结构 6.5.1物理设计的步骤 6.5.2物理设计环境 6.5.3物理设计性能的测量 返回章
6.5.1物理设计的步骤 五步 、可能要反复多次 1. 存贮记录结构设计 2. 确定数据存放位置 3. 访问方法的设计 4. 完整性和安全性考虑 5. 程序设计 返回节
6.5.2 物理设计环境 • 引进的新参数 :物理设备量限制、时间特性及所有的运行要求 • 输出 :物理数据库结构说明书 ,包括存贮记录格式、存贮记录位置分布及访问方法。它能满足所有的操作需求并给出对硬件、软件系统的约束 返回节
6.5.3 物理设计性能的测量 1. 查询响应时间 2. 更新事务的开销 3. 报告生成的开销 4. 改组频率和开销 5. 主存贮空 6. 辅助存贮空间 返回节
6.6 实现与维护 6.6.1数据库的实现 6.6.2其它设计工作 6.6.3运行与维护 返回章
6.6.1数据库的实现 • 建立实际数据库结构 • 测试数据库结构 • 装入数据 返回节
6.6.2其它设计工作 • 数据库的再组织设计 • 故障恢复方案设计 • 安全性考虑 • 事务控制 返回节
6.6.3运行与维护 • 维护数据库的安全性与完整性 • 监测并改善数据库性能 • 增加新功能 • 修改错误 返回节
6.7 用ORACLE建立数据库 6.7.1 数据库结构和空间管理 6.7.2用ORACLE建立和修改数据库 6.7.3 初始化参数文件 返回章
6.7.1 数据库结构和空间管理 • ORACLE物理数据库结构 :数据文件、日志文件和控制文件 • 逻辑数据库结构 : • 一个或多个表空间 • 数据库模式对象(即表、视图、索引、聚集、序列、存储过程)
1. 物理结构 • 数据文件 :一个或多个 ,物理地存储 • 一个数据文件仅与一个数据库相联系 • 一旦建立,数据文件不能改变大小 • 一个表空间(数据库存储的逻辑单位)由一个或多个数据文件组成 • 日志文件 • 控制文件
2. 逻辑结构 • 表空间 : • 数据库可逻辑地划分为一个或多个表空间。 • 每一个表空间是由一个或多个数据文件组成 • 段、范围和数据块 • 段:由一个或多个范围组成,分为数据段、索引段、回滚段和临时段 • 范围 :存储空间分配的一个逻辑单位 ,由连续的数据块所组成 • 数据块 :I/O的最小单位 • (3) 模式和模式对象
模式和模式对象 • 表 • 视图 :用一个查询定义,基于表 • 聚集 :一组表 • 索引 • 序列生成器 • 同义词 • 程序单元 • 数据库链 返回节
6.7.2用ORACLE建立和修改数据库 • 1. 建立数据库命令 • 命令格式如下: • CREATE DATABASE [DB 名][CONTROLFILE REUSE][LOGFILE[GROUP 整数]<文件说明>,…][MAXLOGFILES整数][MAXLOGMEMBERS整数][MAXLOGHISTORY整数][DATAFILE<文件说明>,…][MAXDATAFILES整数][MAXINSTANCES整数][ARCHIVELOG][CHARACTER SET字符集名][EXCLUSIVE] • 其中: • 文件说明(日志文件组)的格式为: • ‘文件名’[(’文件名’,…)][SIZE整数[K][M][REUSE] • 文件说明(文件文件)的格式为: • ‘文件名’[SIZE整数[K][M]][REUSE]
建立数据库 –续(关键字和参数 ) • DB名:为所要建立的数据库的名字 • CONTROLFILE REUSE:重新使用由初始化参数CONTROL_FILES所标识的已存在的控制文件 • LOGFILE:指定用作日志文件的一个或多个文件 • MAXLOGFILES:指定数据库可建的日志文件组的最大值 • MAXLOGMEMBERS;指定日志文件组的最大的成员数 • MAXLOGHISTORY:指定归档日志文件的最大数目 • MAXLOGMEMBERS;指定日志文件组的最大的成员数 • DATAFILE:指定用作为数据文件的一个或多个文件 • ARCHIVELOG:为日志文件组建立归档方式 • CHARACTER SET:指定数据库用于存储数据的字符
建立数据库例 • CREATE DATABASE NewTest • CONTROLFILE REUSE • LOGFILE GROUP 1 (‘diskb:log1.log’,’diskc:log1.log’) • SIZE 50K, • GROUP 2 (‘diskb:log2.log’.’diskc:log2.log’) • SIZE 50K • MAXLOGFILES 5 • MAXLOGHISTORY 100 • DATAFILE’diska:dbone.dat’SIZE 2M • MAXDATAFILES 10 • MAXINSTANCES 2 • ARCHIVELOG • EXCLUSIVE
2. 更改数据库命令 • 常用的部份语法格式如下: • ALTER DATABASE [DB名][MOUNT[EXCLUSIVE][PARALLEL]] • [ADDLOGFILE[THREAD整数][GROUP整数]文件说明,…] • RENAME FILE ’文件名’TO ’文件名’ ,…][ENABLE[PUBLIC]THREAD整数] • RENAME GLOBAL_NAME TO DB名[域名]
更改数据库命令--关键字和参数说明 • DB名:标识要更改的数据库 • NOUNT:装配数据库 (实例未装配该数据库时) • 实例已装配时可使用以下选项: • ADDLOGFILE:加一个或多个日志文件组到指定的线索 • RENAME:对数据库文件或日志文件成员换名 • 已装配数据库并已打开,可使用下列选项 : • DISNABLE/ENABLE :使指定的线索不可实施 /可实施 • RENAME GLOBAL_NAME:修改数据库的全局名
更改数据库命令:例子 • 例6.4:将名为STOCKS数据库,以专用方式安装。 ALTER DATABASE Stocks MOUNT EXCLUSIVE • 例6.5:对GROUP参数值为3的日志文件组增加两个成员。 ALTER DATABASE Stocks ADD LOGFILE GROUP 3(‘diska:log3.log’,’diskb:log3.log’) SIZE 50K • 例6.6:对日志文件成员换名。 ALTER DATABASE Stocks RENAME FILE’diskb:3.log’TO’diskd:log3.log’
更改数据库命令:例子 • 例6.7:对线索5增加一日志文件组,其Group参数值为4,包含三个成员。 ALTER DATABASE Stocks ADD LOGFILE THREAD 5 GROUP 4 (‘diska:log4.log’, ‘diskb:log4.log’,’diskc:log4.log’) • 例6.8:使线索5不能实施。 ALTER DATABASE Stocks DISABLE THREAD 5 • 例6.9:使线索5可实施,使它为任何ORACLE实例使用,那些实例不要显式地请求该线索。 ALTER DATABASE Stocks ENABLE PUBLIC THREAD 5
更改数据库命令:例子 • 例6.10:建立基于文件’DISKY:DB1.DAT’的数据文件’DISKX:DB1.DAT’。 ALTER DATABASE Stocks CREATE DATAFILE’DISKX:DB1.DAT’AS’DISKY:DB1.DAT’ • 例6.11:修改数据库的全局名。 ALTER DATABASE stocks RENAME GLOBAL_NAME TO Sales.Austalia.acme.com
3. 控制文件 -语法格式 • 语法格式如下: • CREATE CONTROLFILE[REUSE][SET]DATABASE DB名 • LOGFILE[GROUP整数]文件说明,…[RESETLOGS][NOTRESETLOGS] • DATAFILE文件说明,… • [MAXLOGFILES整数][MAXLOGMEMBERS整数] • [MAXLOGHISTORY整数][MAXDATAFILES整数] • [MAXINSTANCES整数][ARCHIVELOG]
3. 控制文件 -关键字和参数说明 • REUSE:说明由初始化参数CONTROL_FILES所标识的控制文件可被重用 • SET DATABASE:修改数据库的名字 • DATABASE:指定数据库的名字,该参数值必须是已存在的数据库名 • LOGFILE:为数据库指定日志文件组 • RESETLOGS :忽略LOGFILE子句所列的文件的内容 • NORESETLOGS:说明在LOGFILE子句中全部文件在最后一次打开数据库中使用 • DATAFILE:指定数据库的数据文件,必须列出全部数据文件
例:重建一控制文件 • CREATE CONTROLFILE REUSE • SET DATABASE orders_2 • LOGFILE GROUP 1(‘diskb:log1.olg.’,’diskc:log1.log’) SIZE 50K, • GROUP 2(‘diskb:log2.log’,’diskc:log2.log’) SIZE 50K • NORESETLOGS • DATAFILE’diska:dbone.dat’SIZE 2M • MAXLOGFILE 5 • MAXLOGHISTORY 100 • MAXDATAFILES 10 • MAXINSTANCES 2 • ARCHIVELOG
4. 表空间--建立表空间命令 • CREATE TABLESPACE表空间名DATAFILES文件说明,… [DEFAULT STORAGE存贮子句] [OFFLINE] • 关键字和参数说明: • 表空间名:为所建立的表空间的名字。 • DATAFILE:指定组成表空间的数据文件或文件。 • DEFAULT STORAGE:为在该表空间中建立的全部对象指定缺少的存储参数,由存储子句指定。 • STORAGE存储子句用于指定存储特征,该子句可出现在建立或更改下列对象的命令中:聚集、索引、滚回段、快照、快照日志、表和表空间。
STORAGE子句的语法 • STORAGE([INITINAL整数[K][M]] • [NEXT整数[K][M]][MINEXTENTS整数] • [MAXEXTENTS整数][PCTINCREASE整数] • [OPTIMAL[整数[K][M]][NULL]] • [FREELISTS整数][FREELIST GROUPS整数]…)
STORAGE子句--关键字和参数说明 • INITIAL:指定对象的第一个范围的大小 • NEXT:指定分配给对象的下一范围的大小 • PCTINCREASE:指定第二个范围之后的每一个范围为前一个范围的增长的百分数 • MINEXTENTS:指定在建立段时可分配的范围的总数 • OPTIMAL:为回滚段指定一个适宜的大小 • FREELIST GROUP:为表、聚集或索引指定自由表的组数 • FREELISTS:为表、聚集或索引的每一自由表组指定自由表的数目 • 在建立表空间中其它选项的作用 • ONLINE:使建立的表空间在建立之后,用户立即可用 • OFFLINE:使建立的表空间在建立之后该表空间不能立即使用
例:建立表空间 在数据库中建立名为TABSPACE_2的表空间 • CREATE TABLESPACE TABSPACE_2 • DATAFILE ’diska:tabspace_file2.dat’SIZE 20M • DEFAULT STORAGE(INITIAL 10K NEXT 50K • MINEXTENTS 1 MAXEXTENTS 99 • PCTINCREASE10) • ONLINE
4. 表空间—修改表空间命令 • ALTER TABLESPACE 表空间名 • [ADD DATAFILE文件说明,…] • [DENAME DATAFILE’文件名’,…TO ’文件名’,…] • [DEFAULT STORAGE 存贮子句] • [OFFLINE [TEMPORARY][IMMEDIATE]] • [BEGIN BACKUP]
修改表空间命令--关键字和参数说明 关键字和参数说明: • 表空间名:为所要更改的表空间的名字。 • ADD DATAFILE:将由文件说明所指定的数据文件加到该表空间 • RENAME DATAFILE:对表空间的一个或多个数据文件换名 • DEFAULT STORAGE:为在该表空间中以后建立的对象指定新的缺省存储参数 • ONLINE:使表空间在线。 • OFFLINE:使表空间离线,防止对它的段的存取 • BEGIN BACKUP:它意味对组成该表空间的数据文件要执行在线后备 • END BACKUP:它意味表空间的在线后备完成
例:修改表空间命令 • 例6.14:通知数据库,开始后备。 • ALTER TABLESPACE accounting BEGIN BACKUP • 例6.15:通知数据库,后备完成。 • ALTER TABLESPACE acounting END BACKUP • 例6.16:将表空间ACCOUNTING的数据文件’DISKA:PAY1.DAT’改名为’DISKB:RECEIVE.DAT’: