您的位置:首页 > 数据库

SQL复习笔记 --- 数据库设计步骤

2017-12-23 12:04 239 查看

SQL笔记 — 数据库设计步骤

本文转载自:SQL笔记 — 数据库设计步骤

目录

总体设计过程

需求分析

概念结构设计

逻辑结构设计

数据库物理设计

数据库实施

数据库运行和维护

总体设计过程

数据库设计步骤:





设计描述:



数据库设计不同阶段形成的数据库各级模式:



数据库设计的特点:



需求分析

分析和表达用户需求:

首先把任何一个系统都抽象为:



分解处理功能和数据:

分解处理功能:

– 将处理功能的具体内容分解为若干子功能

分解数据:

– 处理功能逐步分解同时,逐级分解所用数据,形成若干层次的数据流图

表达方法:

– 处理逻辑:用判定表或判定树来描述

– 数据:用数据字典来描述

将分析结果再次提交给用户,征得用户的认可

任务:

通过调查,收集与分析数据,获得用户对数据要求:

信息要求:

– 指用户需要从数据库中获得信息的内容与性质,再由信息要求导出数据要求

处理要求

–值用户要完成什么处理功能,对初一响应时间有什么要求,处理方式是批处理还是联机处理

安全性与完整性要求

需求分析过程:



数据流图:

符号说明:



例子:



数据字典:

与数据流图的区别

数据流图 – 表达了数据和处理的关系

数据字典 – 则是系统中各类数据描述的集合

组成:

数据项:

形式:

数据项描述 ={ 数据项名, 数据项含义说明, 别名, 数据类型, 长度, 取值范围, 取值含义, 其他数据项的逻辑关系, 数据项之间的联系 }

例子:数据项,以“学号”为例:

数据项: 学号

含义说明: 唯一标识每个学生

别名: 学生编号

类型: 字符型

长度: 8

取值范围: 00000000至99999999

取值含义: 前两位标别该学生所在年级, 后六位按顺序编号

数据结构:

形式:

数据结构描述 ={ 数据结构名, 含义说明, 组成: { 数据项或数据结构 } }

例子:数据结构,以“学生”为例学生”是该系统中的一个核心数据结构:

数据结构:学生

含义说明:是学籍管理子系统的主体数据结构, 定义了一个学生的有关信息

组成:学号,姓名,性别,年龄,所在系,年级

数据流:

形式:

- 数据流描述 ={ 数据流名, 说明, 数据流来源, 数据流去向, 组成: {数据结构}, 平均流量, 高峰期流量 }

例子:数据流,“体检结果”可如下描述:

数据流:体检结果

说明:学生参加体格检查的最终结果

数据流来源:体检

数据流去向:批准

组成:   ……

平均流量: ……

高峰期流量:……

数据存储:

形式:

数据存储描述 ={ 数据存储名, 说明, 编号, 输入的数据流, 输出的数据流, 组成: {数据结构}, 数据量, 存取频度, 存取方式 }

例子:数据存储,“学生登记表”可如下描述:

数据存储:学生登记表

说明:记录学生的基本情况

流入数据流:……

流出数据流:……

组成:……

数据量:每年3000张

存取方式:随机存取

处理过程:

形式:

处理过程描述 ={ 处理过程名, 说明, 输入:{ 数据流 }, 输出: {数据流}, 处理: { 处理过程 }}

例子:处理过程“分配宿舍”可如下描述:

处理过程:分配宿舍

说明:为所有新生分配学生宿舍

输入:学生,宿舍

输出:宿舍安排

处理:在新生报到后,为所有新生分配学生宿舍. 要求同一间宿舍只能安排同一性别的学生, 同一个学生只能安排在一个宿舍中. 每个学生的居住面积不小于3平方米. 安排新生宿舍其处理时间应不超过15分钟

概念结构设计

特点:

能真实、充分地反映现实世界

易于理解

易于更改

易于向关系、网状、层次等各种数据模型转换



四类方法:

自顶向下:

定义:

即首先定义全局概念结构的框架,然后逐步细化

图解:



自底向上:

定义:

即首先定义个局部应用的概念结构,然后将他们集合起来,得到全局概念

步骤:

第1步:抽象数据并设计局部视图

第2步:集成局部视图,得到全局概念结构

图解:



逐步扩展:

定义:

首先定义最重要的核心概念结构,然后向外扩充,以滚球的方法逐步生成其他概念结构,直至总体概念结构

图解:



混合策略:

定义:[/b]

即将自顶向下和自底向上相结合,用自顶向下策略设计一个全局概念结构框架,以它为骨架集成由底向上策略中设计的个局部概念结构

图解:



三种常用抽象:

分类(Classification):

定义某一类概念作为现实世界中一组对象的类型

抽象了对象值和型之间的“is member of”的语义

图例:



聚集(Aggregation):

定义某一类型的组成成分

抽象了对象内部类型和成分之间“is part of”的语义

复杂的聚集,某一类型的成分仍是一个聚集

图例:



概括(Generalization):

定义类型之间的一种子集联系

抽象了类型之间的“is subset of”的语义

继承性:



E-R图:

任务:

将各局部应用涉及的数据分别从数据字典中抽取出来

参照数据流图,标定各局部应用中的实体、实体的属性、标识实体的码

确定实体之间的联系及其类型(1:1,1:n,m:n)

两条准则:

属性不能再具有需要描述的性质.即属性必须是不可分的数据项,不能再由另一些属性组成

属性不能与其他实体具有联系.联系只发生在实体之间

视图集成:

分类:

一次集成 一次集成多个分E-R图

通常用于局部视图比较简单时

逐步集成:

用累加的方式一次集成两个分E-R图

逐步集成:



冲突:

两类属性冲突:

属性域冲突:

属性值的类型

取值范围

取值集合不同

属性取值单位冲突

两类命名:

冲突 同名异义: 不同意义的对象在不同的局部应用中具有相同的名字

异名同义(一义多名): 同一意义的对象在不同的局部应用中具有不同的名字

三类结构冲突:

同一对象在不同应用中具有不同的抽象

同一实体在不同分E-R图中所包含的属性个数和属性排列次序不完全相同

实体之间的联系在不同局部视图中呈现不同的类型

基本任务:

消除不必要的冗余,设计生成基本E-R图

步骤:

合并分E-R图,生成初步E-R图:

消除冲突

属性冲突

命名冲突

结构冲突

修改与重构:

消除不必要的冗余,设计生成基本E-R图

分析方法

规范化理论

验证概念结构:

整体概念结构内部必须具有一致性,不存在互相矛盾的表达

整体概念结构能准确地反映原来的每个视图结构,包括属性、实体及实体间的联系

整体概念结构能满足需要分析阶段所确定的所有要求

逻辑结构设计

E-R图与关系模型转换:

转换内容:

将实体、实体的属性和实体之间的联系转换为关系模式

转换原则:

一个实体转换为一个关系模式

实体的属性即为关系的属性

实体的码即为关系的码

E-R图实体型间的联系有以下不同情况:

一个1:1联系可以转换为一个独立的关系模式,也可以与任意一端对应的关系模式合并:

转换为一个独立的关系模式

与某一端实体对应的关系模式合并

一个1:n联系可以转换为一个独立的关系模式,也可以与n端对应的关系模式合并:

转换为一个独立的关系模式

与n端对应的关系模式合并

一个m:n联系转换为一个关系模式

三个或三个以上实体间的一个多元联系转换为一个关系模式

具有相同码的关系模式可合并:

目的:减少系统中的关系个数

合并方法: 将其中一个关系模式的全部属性加入到另一个关系模式中,然后去掉其中的同义属性(可能同名也可能不同名),并适当调整属性的次序

优化数据模型方法:

确定数据依赖

对于各个关系模式之间的数据依赖进行极小化处理,消除冗余的联系.

确定各关系模式分别属于第几范式.

分析对于应用环境这些模式是否合适,确定是否要对它们进行合并或分解.

对关系模式进行必要的分解或合并

设计用户子模式:

使用更符合用户习惯的别名

针对不同级别的用户定义不同的外模式,以满足系统对安全性的要求.

简化用户对系统的使用

任务:

将概念结构转化为具体的数据模型

逻辑结构设计的步骤

将概念结构转化为一般的关系、网状、层次模型

将转化来的关系、网状、层次模型向特定DBMS支持下的数据模型转换

对数据模型进行优化

设计用户子模式

逻辑结构设计时3个步骤:



数据库物理设计

步骤:

确定数据库的物理结构,在关系数据库中主要指存取方法和存储结构

对物理结构进行评价,评价的重点是时间和空间效率

索引存取:

选择索引存取方法的一般规则:

如果一个(一组)属性经常在查询条件中出现,则考虑在这个(这组)属性上建立索引(组合索引)

如果一个属性经常作为最大值和最小值等聚集函数的参数,则考虑在这个属性上建立索引

如果一个(或一组)属性经常在连接操作的连接条件中出现,则考虑在这个(或这组)属性上建立索引

关系上定义的索引数过多会带来较多的额外开销:

维护索引的开销

查找索引的开销

聚簇:

用途:

大大提高按聚簇码进行查询的效率

节省存储空间

局限性:

聚簇只能提高某些特定应用的性能

建立与维护聚簇的开销相当大

适用范围:

既适用于单个关系独立聚簇,也适用于多个关系组合聚簇

当通过聚簇码进行访问或连接是该关系的主要应用,与聚簇码无关的其他访问很少或者是次要的时,可以使用聚簇

数据库实施

数据装载方法:

人工方法

计算机辅助数据入库

主要工作:

功能测试:实际运行数据库应用程序,执行对数据库的各种操作,测试应用程序的功能是否满足设计要求,如果不满足,对应用程序部分则要修改、调整,直到达到设计要求

性能测试:测量系统的性能指标,分析是否达到设计目标,如果测试的结果与设计目标不符,则要返回物理设计阶段,重新调整物理结构,修改系统参数,某些情况下甚至要返回逻辑设计阶段,修改逻辑结构

强调两点:

分期分批组织数据入库

重新设计物理结构甚至逻辑结构,会导致数据重新入库.

先输入小批量数据供调试用:

待试运行基本合格后再大批量输入数据

逐步增加数据量,逐步完成运行评价

由于数据入库工作量实在太大,费时、费力,所以应分期分批地组织数据入库

数据库的转储和恢复

在数据库试运行阶段,系统还不稳定,硬、软件故障随时都可能发生

系统的操作人员对新系统还不熟悉,误操作也不可避免

因此必须做好数据库的转储和恢复工作,尽量减少对数据库的破坏

数据库运行和维护

DBA维护数据库工作:

数据库的转储和恢复

数据库的安全性、完整性控制

数据库性能的监督、分析和改进

数据库的重组织和重构造

重组织:

形式:

全部重组织

部分重组织(只对频繁增、删的表进行重组织)

目标:

提高系统性能

工作:

按原设计要求:

重新安排存储位置

回收垃圾

减少指针链

数据库的重组织不会改变原设计的数据逻辑结构和物理结构

重构造:

根据新环境调整数据库的模式和内模式:

增加新的数据项

改变数据项的类型

改变数据库的容量

增加或删除索引

修改完整性约束条件
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  数据库 sql 设计