《系统架构设计师教程(第2版)》第6章-据库设计基础知识-03-关系数据库设计

文章目录

  • 0. 设计的基本步骤
    • 0.1 用户需求分析
    • 0.2 概念结构设计
    • 0.3 逻辑结构设计
    • 0.4 物理结构设计
    • 0.5 数据库实施阶段
    • 0.6 数据库运行和维护阶段
  • 1. 数据需求分析
    • 1.1 概述
    • 1.2 需要获取的需求
  • 2. 概念结构设计
    • 2.1 概述
    • 2.2 E-R方法
    • 2.3 概念结构设计工作步骤
      • 2.3.1 选择局部应用
      • 2.3.2 逐一设计分 E-R图
      • 2.3.3 E-R图合并
        • 1)概述
        • 2)分E-R 图进行合并的冲突
        • 3)E-R图的优化
  • 4. 逻辑结构设计
    • 4.1 E-R图转换为关系模式
      • 4.1.1
      • 4.1.2 转换方法
        • 1)E-R的实体转换
        • 2)E-R图的关系转换
    • 4.2 关系模式规范化
    • 4.3 确定完整性约束
    • 4.4 确定用户视图
    • 4.5 反规范化(Denormalization)
  • 5. 物理设计
    • 5.1 确定数据分布
      • 5.1.1 概述
      • 5.1.2 要考虑的因素
    • 5.2 确定数据的存储结构
    • 5.3 确定数据的访问方式
      • 5.3.1 存储记录结构设计
      • 5.3.2 存储记录布局
      • 5.3.3 存取方法的设计
        • 1)概述
        • 2)确定索引的一般顺序
  • 6. 数据库实施
    • 6.1 建立实际的数据库结构
      • 6.1.1 数据库模式、子模式、空间等的描述
      • 6.1.2 数据库完整性描述
      • 6.1.3 数据库安全性描述
      • 6.1.4 数据库物理存储参数描述
    • 6.2 数据加载
      • 6.2.1 数据加载程序的设计
      • 6.2.2 数据加载方法
      • 6.2.3 数据库的加载
      • 6.3 数据库试运行和评价
  • 7. 数据库运行维护
    • 7.1 对数据库性能的监测和改善
    • 7.2 数据库的备份及故障恢复
    • 7.3 数据库重组和重构

0. 设计的基本步骤

0.1 用户需求分析

  • 概述:
    • 采用一定的辅助工具
    • 对应用对象的功能、性能、限制等要求进行科学的分析。

0.2 概念结构设计

  • 概述:是对信息分析和定义

如视图模型化、视图分析和汇总对应用对象精确地抽象、概括而形成独立于计算机系统的企业信息模型

  • 概念模型的描述工具: E-R图。

0.3 逻辑结构设计

  • 概述:
    • 将抽象的概念模型转化为适合的逻辑模型

      即,与选用的 DBMS产品所支持的数据模型相符合

    • 是物理结构设计的基础
  • 包括:
    • 模式初始设计
    • 子模式设计
    • 应用程序设计
    • 模式评价
    • 模式求精

0.4 物理结构设计

概念:是逻辑模型在计算机中的具体实现方案

0.5 数据库实施阶段

  • 行为:
    • 建立数据库,
    • 编制与调试应用程序
    • 组织数据入库
    • 并进行试运行。

0.6 数据库运行和维护阶段

  • 行为:
    • 数据库应用系统经过试运行即可投入运行
    • 不断地对系统进行评价、调整与修改

1. 数据需求分析

1.1 概述

  • 概述:
    • 用户和设计人员对数据库应用系统所要涉及的内容(数据)和功能(行为)进行整理和描述
    • 是以用户的角度来认识系统
  • 作用:后续开发的基础
  • 参与人员:分析人员、用户

分析人员不了解业务,用户没有系统分析能力

  • 该阶段的任务
    • 综合用户的应用需求,对现实世界要处理的对象进行详细调查
    • 了解现行系统的概况,确定新系统功能
  • 分析和表达方法:
    • 自顶向下的机构化分析:
      • 从最上层的系统组织机构入手
      • 采用逐层分解的方式分析系统
      • 把每一层用数据流图和数据字典描述
    • 自底向上:
  • 需求分析的重点:调查组织机构情况、调查各部门的业务活动情况、协助用户明确对新系统的各种要求、确定新系统的边界,以此获得用户对系统的如下要求。

1.2 需要获取的需求

  • 信息要求

    • 要保存哪些信息
    • 根据这些信息得到什么信息
    • 信息的完整性需求
  • 处理要求

    • 实现什么操作功能
    • 对保存信息的处理过程和方式
    • 各种操作处理的频度、响应时间要求、处理方式
    • 处理过程中的安全性要求和完整性要求
  • 系统要求

    • 安全性要求
      • 系统有几种用户
      • 每一种用户的使用权限
    • 使用方式要求
      • 用户的使用环境
      • 用户并发数、最大并发数
      • 有无查询相应的时间要求
    • 可扩充性要求
      • 对未来功能、性能和应用访问的可扩充性的要求。

2. 概念结构设计

2.1 概述

  • 目标:产生概念模式
  • 概念:
    • 设计人员从用户的角度看待数据以及数据处理的要求和约束,产生一个反映用户观点的概念模式

2.2 E-R方法

  • 概述:

    • 采用 E-R模型将现实世界的信息结构统一由实体、属性,以及实体之间的联系来描述。
  • 对现实事物抽象认识的3种方法:

    • 分类 (Classification):对现实世界的事物,按照其具有的共同特征和行为,定义一种类型
    • 聚集 (Aggregation): 定义某一类型所具有的属性
    • 概括 (Generalization): 由一种已知类型定义新的类型
      • 超类 (Superclass):上文中的已知类
      • 子类 (Subclass):上文中新定义的类型
      • 关系:子类是超类的子集

      如:研究生是学生的一个子集

  • E-R图三要素:实体、属性、联系

2.3 概念结构设计工作步骤

2.3.1 选择局部应用

  • 操作:使用数据流图清理数据
  • 目的:划分好各个局部应用
  • 数据流图
    • 是对业务处理过程从高层到底层的一级级抽象
  • 选择适当层次的数据流图,让这一层的每一部分对应一个局部应用,实现某一项功能
    • 高层抽象流图:一般反映系统的概貌,对数据的引用较为笼统
    • 底层数据流图:可能过于细致

2.3.2 逐一设计分 E-R图

  • 目的:设计局部E-R图
  • 操作:对每个局部应用逐一设计分E-R图(局部E-R图)
    • 每一个局部应用,所有数据都收集在数据字典中
    • 依照该局部应用的数据流图,从数据字典中提取出数据
    • 使用抽象机制,确定其实体、实体的属性、实体标识符、实体间的联系、实体类型

事实上,在形成数据字典的过程中,数据结构、数据流和数据存储都是根据现实事物来确定的,因此都已经基本上对应了实体及其属性,以此为基础,加以适当调整,增加联系及其类型,就可以设计分E-R图。

2.3.3 E-R图合并

1)概述
  • 目的:得到统一、精炼的全局概念模型

    • 解决分E-R图中相互间存在的冲突
    • 消除冗余信息
  • 合并方法:

    • 将具有相同实体的两个或多个E-R图合并

    合并后的E-R图是之前合并前分ER图的并集

    • 以此实体为中心,并入其他所有分E-R图
    • 直至所有的 E-R 图全部合并,得到一张全局E-R 图
2)分E-R 图进行合并的冲突
  • 属性冲突
    • 同一属性存在于不同的分E-R图中,但属性的类型、取值范围、数据单位等可能会不一致。
  • 命名冲突
    • 相同意义的属性,在不同的分 E-R图上有着不同的命名
    • 名称相同的属性在不同的分 E-R 图中代表着不同的意义
  • 结构冲突
    • 同一实体在不同的分E-R 图中有不同的属性
    • 同一对象在某一分E-R图中被抽象为实体而在另一分E-R 图中又被抽象为属性
3)E-R图的优化

分E-R图的合并过程中要对其进行优化:

  • 实体类型的合并

两个具有1:1联系或1:*联系的实体,可以予以合并,使实体个数减少,有利于减少将来数据库操作过程中的连接开销。

  • 冗余属性的消除

一般在各分E-R图中的属性是不存在冗余的,但合并后就可能出现冗余。因为合并后的 E-R图中的实体继承了合并前该实体在分E-R图中的全部属性,属性间就可能存在冗余,即某一属性可以由其他属性确定。

  • 冗余联系的消除
  • 冗余现象:合并过程中出现实体联系的环状结构
    • 实体A 与实体B直接联系
    • 实体A 通过实体C与实体B 间接联系
  • 消除:消除直接联系。

4. 逻辑结构设计

  • 概念:在概念结构设计的基础上进行数据模型设计
    • 可以是层次模型、网状模型、关系模型
  • 逻辑结构设计阶段的主要工作步骤如下:

4.1 E-R图转换为关系模式

4.1.1

  • 转换原因:E-R图方法所得到的全局概念模型是对信息世界的描述,并不适用于计算机处理

4.1.2 转换方法

1)E-R的实体转换

将 E-R 图中的实体逐一转换成为一个关系模式:

  • 实体名对应关系模式的名称
  • 实体的属性转换为关系模式的属性
  • 实体标识符就是关系的码
2)E-R图的关系转换
  • 一对一联系的转换:
    • 将联系归并到关联的两个实体的任一方
      • 给待归并的一方实体属性集中增加另一方实体的码和该联系的属性
    • 归并后的实体码保持不变
  • 一对多联系的转换
    • 将联系归并“多”的一方
      • “多”的一方实体属性中,增加另一方的码和属性
    • 归并后的多方实体的码保持不变
  • 多对多联系的转换
    • 只能转换成一个独立的关系模式
      • 关系模式的名称:取联系的名称
      • 关系模式的属性:取两个实体的码及联系的属性
      • 关系的码:是多方实体的码构成的属性组

4.2 关系模式规范化

具体步骤如下:

  1. 确定数据依赖
    • 根据语义确定各关系模式的数据依赖

在设计的前一阶段,只是从关系及其属性来描
述关系模式,并没有考虑到关系模式中的数据依赖。关系模式包含着语义,要根据关系模式所
描述的自然语义写出关系数据依赖。

  1. 确定当前范式
    • 根据数据依赖确定关系模式的范式

由关系的码及数据依赖,根据规范化理论,就可以确定关系模式所属的范式,判定关系模式是否符合要求,即是否达到了3N F或 BCNF。

  1. 分解关系以达到范式3NF或BCNF

如果关系模式不符合要求,要根据关系模式的分解算法对其进行分解,使其达到3NF或BCNF。

  1. 关系模式的评价及修正
    • 部分关系模式的处理,分解、合并或增加冗余属性,提高存储效率和处理效率。

4.3 确定完整性约束

  • 目的:保证数据的正确性

对关系模式加以约束:包括数据项的约束、表级约束及表间约束
参照SQL 标准来确定不同的约束:如检查约束、主码约束、参照完整性约束

4.4 确定用户视图

  • 概述:根据数据流图及用户信息建立视图模式
  • 目的:提高数据的安全性和独立性
  • 过程:
    • 根据数据流图确定处理过程使用的视图
      • 原因:数据流图是某项业务的处理
        • 只用到部分数据
        • 数据可能跨关系模式
      • 作用:降低应用程序的复杂性、提高数据的独立性
    • 根据用户类别确定不同用户使用的视图
      • 原因:不同用户应只能处理部分用户(而确定关系模式时没有考虑此因素)

        如:不同的院系只能访问和处理自己的学生信息

      • 作用:提高安全性

4.5 反规范化(Denormalization)

  • 原因:规范化过程导致关系的单一化,增加了多表的关联操作,导致查询性能下降
  • 目的:提高操作性能
  • 操作:
    • 冗余列:避免关联查询
    • 派生列:常用计算结果直接存储,避免每次计算
    • 表重组
    • 表分割:
      • 水平分割:如,按日期分割历史数据
      • 垂直分割:如,分割经常访问列以提高查询效率
  • 反规范化带来冗余问题的解决方法:
    • 应用程序同步
    • 批处理
    • 触发器同步

5. 物理设计

其主要工作步骤:

5.1 确定数据分布

5.1.1 概述

  • 行为:确定是集中管理还是分布式管理
  • 分布管理考虑的因素:

5.1.2 要考虑的因素

确定数据分布需要考虑的因素:

  • 根据不同应用分布数据
    • 不同业务的数据存储在不同场地
    • 应用多个场地的业务通过网络处理数据
  • 根据处理要求确定数据的分布
    • 对于使用频度高、响应时间短的数据,应存储在高速设备上。
  • 逻辑设计阶段的必要修改
    • 原因:分布存储必然会导致数据的逻辑结构的变化
    • 操作:对关系模式作新的调整,需要回到数据库逻辑设计阶段

5.2 确定数据的存储结构

  • 数据存储结构:数据文件中记录之间的物理结构
  • 存储方式:
    • 顺序存储
    • 哈希存储
    • 堆存储
    • B+ 树存储等
  • 选择存储结构的的依据:
    • 数据的处理要求
    • 变更频度
  • 索引技术
    • 目的:提高数据访问速度
    • 本步骤要确定索引字段和索引类型

5.3 确定数据的访问方式

  • 概述:由存储结构决定
    数据的访问方式是由其存储结构所决定的,采用什么样的存储结构,就使用什么样的访问
    方式。数据库物理结构主要由存储记录格式、记录在物理设备上的安排及访问路径(存取方法)
    等构成

5.3.1 存储记录结构设计

  • 存储记录结构包括
    • 记录的组成
    • 数据项的类型、长度
    • 数据项间的联系
    • 辑记录到存储记录的映射
  • 设计记录的存储结构时,并不改变数据库的逻辑结构,但可以在物理上对记录进行分割
  • 性能优化:将常用关系分片,分布存储在多个磁盘上,以提高性能

5.3.2 存储记录布局

  • 存储记录的布局:即,确定数据的存放位置。

    存储记录作为一个整体,如何分布在物理区域上

  • 聚簇:

    • 采用聚簇功能可以大大提高按聚簇码进行查询的效率。
    • 可用于单个关系、多个关系
  • 建立聚簇索引的原则:

    • 聚簇码的值相对稳定

    没有或很少需要进行修改。

    • 表主要用于查询,并且通过聚簇码进行访问或连接是该表的主要应用
    • 对应每个聚簇码值的平均元组数应事宜

5.3.3 存取方法的设计

1)概述
  • 存取方法包括:
    • 存储结构:限定了可能访问的路径和存储记录
    • 检索机制:定义了每个应用的访问路径
  • 在数据库中建立存取路径最普遍的方法是建立索引
  • 索引的使用
    • 原理:改善存取路径
    • 优点:减少检索的CPU服务时间和 I/O服务时间,改善检索效率
    • 缺点:不能对进行频繁存储操作的关系建立过多的索引
2)确定索引的一般顺序
  1. 确定关系的存储结构
    • 即记录的存放是无序的,还是按某属性聚簇存放
  2. 确定不宜建立索引的属性或表
    • 太小的表
    • 经常更新的属性或表
    • 属性值很少的表
    • 过长的属性
    • 特殊数据类型的属性,如:大文本、多媒体数据
    • 很少作为查询条件的属性
  3. 确定宜建立索引的属性
    • 关系的主码或外部码
    • 以查询为主的表、只读表
    • 范围查询
    • 聚集函数 (Min、Max、Avg、Sum、Count)
    • 需要排序输出的属性

6. 数据库实施

  • 说句库的实施:根据逻辑和物理设计的结果,在计算机上建立起实际的数据库结构,数据加载,进行试运行、评价的过程

6.1 建立实际的数据库结构

用DBMS提供的数据定义语言 (DDL) 编写描述逻辑设计和物理设计结果的程序(一般称为数据库脚本程序),经计算机编译处理和执行后,就生成了实际的数据库结构。
所用 DBMS的产品不同,描述数据库结构的方式也不同。有的 DBMS 提供数据定义语言,有的提供数据库结构的图形化定义方式,有的两种方法都提供。

在定义数据库结构时,应包含以下内容:

6.1.1 数据库模式、子模式、空间等的描述

以Oracle为例:

  • 数据库逻辑结果的描述包括:表空间 (Tablespace)、 段 (Segment)、 范围 (Extent)、数据块 (Datablock)
  • DBA 或设计人员通过对数据库空间的管理和分配,可以控制数据库中数据的磁盘分配,将确定的空间份额分配给数据库用户,能够控制数据的可用性,将数据存储在多个设备上,以此提高数据库性能等。

6.1.2 数据库完整性描述

  • 数据的完整性:指数据的有效性、正确性、一致性。
  • 数据的完整性设计,应该贯穿在数据库设计的全过程中。例如:
    • 在数据需求分析阶段,收集数据信息时,应该向有关用户调查该数据的有效值范围
    • 在模式与子模式中,可以用DBMS提供的DDL 语句描述数据的完整性。

6.1.3 数据库安全性描述

  • 数据安全性设计,应该贯穿在数据库设计的全过程中
    • 进行需求分析时,收集关于数据的安全性说明
    • 在设计数据库逻辑结构时,对于保密级别高的数据,可以单独进行设计。
  • 子模式
    • 是实现安全性要求的一个重要手段
    • 可以为不同的应用设计不同的子模式
  • 用户数据控制
    • 给合法用户授权,目前主要有
      身份验证和口令识别;二是给合法用户不同的存取权限。

6.1.4 数据库物理存储参数描述

物理存储参数因DBMS 的不同而不同。一般可设置的参数包括块大小、页面大小(字节数或块数)、数据库的页面数、缓冲区个数、缓冲区大小和用户数等

6.2 数据加载

6.2.1 数据加载程序的设计

  • 在应用程序设计阶段完成
  • 需建立严格的数据登录、录入和校验规范

设计完善的数据校验与校正程序,排除不合格数据

6.2.2 数据加载方法

  • 手工录入
  • 使用数据转换工具
    • 现有的DBMS 都提供了DBMS之间数据转换的工具

6.2.3 数据库的加载

在数据库的试运行和评价工作中分批进行

6.3 数据库试运行和评价

  • 数据库的试运行:加载了部分必须的数据和应用程序后,开始对数据库系统进行的联合调试
  • 运行和评价的目的: 测试应用程序的功能,以便发现问题(而不是说明达到哪些功能)
    • 测试中一定要有非设计人员的参与

7. 数据库运行维护

7.1 对数据库性能的监测和改善

  • 性能度量: I/O 量、CPU时间、系统响应时间
  • 数据库系统的运行性能会不断变化

    某些数据库结构(如数据页和索引)经过一段时间的使用以后,可能会被破坏

DBMS都提供系统监控或分析工具:在SQLServer中使用SQL Server Profiler组件、 Transaction-SQL工具和Query Analyzer组件等

7.2 数据库的备份及故障恢复

没有什么要记忆的

7.3 数据库重组和重构

数据库运行一段时间后,由于记录的增、删、改,数据库物理存储碎片记录链过多,影响
数据库的存取效率。这时,需要对数据库进行重组和部分重构。

  • 数据库重组:指在不改变数据库逻辑和物理结构的情况下,去除数据库存储文件中的废弃空间以及碎片空间中的指针链,使数据库记录在物理上紧连。
  • 数据库重构:对数据库的结构做修改
    • 表结构修改:数据列的增删和修改、约束的修改、表的分解与合并
    • 视图修改
      • 优点:可以实现数据的逻辑独立性,实现数据的安全性
      • 缺点:可能会影响数据的安全性

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/537841.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Stable Diffusion 模型下载:Juggernaut(主宰、真实、幻想)

本文收录于《AI绘画从入门到精通》专栏,专栏总目录:点这里。 文章目录 模型介绍生成案例案例一案例二案例三案例四案例五案例六案例七案例八 下载地址 模型介绍 该模型是一个真实模型,并且具有幻想和创意色彩。 作者述:我选取了…

阿里云-云服务器ECS新手如何建网站?

租阿里云服务器一年要多少钱? 不同类型的服务器有不同的价格。 以ECS计算型c5为例:2核4G-1年518.40元,4核8G-1年948.00元。 阿里云ECS云服务器租赁价格由三部分组成: 也就是说,云服务器配置成本磁盘价格网络宽带价格…

MBT-Net

feature F,edge feature E-F where r related to the relative position 辅助信息 作者未提供代码

STC89C52单片机 启动!!!(一)

跑马灯实现 直接上代码 #include<regx52.h> sbit D1P2^0; sbit D2P2^1; sbit D3P2^2; sbit D4P2^3; sbit D5P2^4; sbit D6P2^5; sbit D7P2^6; sbit D8P2^7; void delay(int num){while(num--){} } void led_running(){//从第1盏灯到第8盏灯依次点亮D10;delay(40000);D2…

Github主页设置贪吃蛇详细教程

先看最终实现结果&#xff1a; 有条贪吃蛇放在主页还是蛮酷的哈哈哈。接下来我来讲一讲怎么在Github主页添加一条贪吃蛇。 首先要修改自己的Github的主页&#xff0c;我们得有一个特殊的仓库——这个仓库必须与你的Github用户名保持一致&#xff0c;并且需要公开&#xff0c…

Database Connection Pool 数据库连接池-01-概览

拓展阅读 第一节 从零开始手写 mybatis&#xff08;一&#xff09;MVP 版本。 第二节 从零开始手写 mybatis&#xff08;二&#xff09;mybatis interceptor 插件机制详解 第三节 从零开始手写 mybatis&#xff08;三&#xff09;jdbc pool 从零实现数据库连接池 第四节 从…

QT c++ 双精度数拆分和组合 Tool

本文描述QT c的双精度数拆分和合并&#xff0c;即双精度浮点数拆为四个16位无符号整数以及将四个16位无符号整数组合为双精度浮点数。 开发平台&#xff1a;win10QT6.2.4 MSVC2019 64 bit 在本文的最好列出了代码和可执行文件打包下载链接&#xff08;可直接使用&#xff09;…

国创证券|炒股有哪八不碰?

炒股存在以下八不碰&#xff1a; 1、散户多的个股不碰 散户较多&#xff0c;则阐明市场上的散户在不断地买入该股&#xff0c;主力在不断地卖出该股&#xff0c;筹码逐步从主力的手中流入散户的手中&#xff0c;这会引起市场上的投资者惊惧&#xff0c;大量地抛出手中的股票&…

maven打包把所有依赖的jar copy到一个文件夹

在maven项目中&#xff0c;是使用依赖坐标来引入jar包&#xff0c;在引入jar包的时候&#xff0c;maven也会默默的帮助我们导入这个jar包所依赖的jar包。 但是当我们打包项目使用jar包运行的时候&#xff0c;往往会出现缺少jar的情况&#xff1a; 如果我们一个一个添加缺少的…

Android系统 关于ntp的修改(网络时间同步)

一&#xff0c;现象&#xff1a; 1. NTP介绍 NTP&#xff1a;网络时间协议&#xff0c;英文名称&#xff1a;Network Time Protocol&#xff08;NTP&#xff09;是用来使计算机时间同步化的一种协议&#xff0c;它可以使计算机对其服务器或时钟源&#xff08;如石英钟&#x…

input输入框支持明文暗文切换

input输入框支持明文暗文切换 场景与思路实现 场景与思路 我们通常实现密码框的时候会直接使用 input ,设置它的 type 为 password&#xff0c;如果要实现明文和暗文的切换&#xff0c;实际上就是 type“text” 和 type"password"的切换。 实现 样式上我们可以先找…

Igraph入门指南 5

2、graph_from系列&#xff0c;将其他R数据结构转换成图 2-1 邻接矩阵转图&#xff1a;graph_from_adjacency_matrix 可以接受Matrix包创建的稀疏矩阵作为参数 邻接矩阵中行的顺序被保留&#xff0c;并作为图中顶点的顺序。 本函数几个重要的参数&#xff1a; weighted&am…