21/8/1 读书笔记 数据库设计

21/8/1 读书笔记

数据库系统概论 数据库设计

什么是数据库设计?数据库设计对于数据库系统的意义又是什么?

数据库设计是指对一个特定的应用场景,构造并优化数据库逻辑模式和物理结构,并在此基础上建立数据库,以及打造应用系统。数据库设计的意义在于使得数据库及其应用系统能够更加有效存储和管理数据,以满足用户的各种需求。

我们认为数据库设计中,具有以下特点:

  • “三分技术,七分管理,十二分基础数据”:管理不仅包括数据库作为软件工程的项目管理,也涉及用户使用过程中的管理。基础数据强调数据的收集、整理、组织、更新。
  • 将结构设计与行为设计相结合:结构设计指对于数据模型与数据库建模方法的设计,行为设计指基于数据的语义进行分析和抽象。

数据库设计过程可以分为六大阶段:

  1. 需求分析:了解与分析用户对于数据存储及其使用的需求
  2. 概念结构设计:基于用户需求构建概念模型
  3. 逻辑结构设计:基于概念模型与数据库本身的数据模型进行数据存储的逻辑结构的设计
  4. 物理结构设计:为逻辑结构选定最适合使用要求的物理结构
  5. 数据库实施:利用数据库管理系统提供的语言描述与建立数据库系统
  6. 数据库运行与维护:转储、恢复、安全性控制、重构等工作

需求分析

需求分析需要获取用户对数据库的需求,主要包括:

  • 信息要求:指用户希望获取的信息的内容与性质,即数据库存储的信息性质
  • 处理要求:指用户希望完成的数据处理功能及对应性能要求
  • 安全性和完整性要求。

注意需求分析需要在设计人员熟悉用户内部业务活动的前提下,协助不具备数据库设计知识的用户明确其需求,并且指出用户需求中的系统边界,即哪些需求由计算机完成,哪些需求由用户人工完成。

需求分析的结果可以表达为一个数据字典——一种用于描述数据性质与流动的数据结构,是数据库的元数据,其包括:

  • 数据项:数据字典中不可再分的最小单位。描述了一项数据,通常包括

    \[\{数据项名,数据项语义,别名,数据类型,取值范围,单位,数据项之间联系\} \]

  • 数据结构:描述数据之间的组合关系。由多个数据项组成,描述一项结构上更为复杂的数据,与数据项均描述数据本身。通常包括

    \[\{数据结构名,数据结构语义,组成:\{数据项或者数据结构\}\} \]

  • 数据流:是数据在系统内传输的路径。通常包括:

    \[\{数据流名称,数据流来源,数据流去向,平均流量,高峰期流量,组成:\{数据结构\}\} \]

  • 数据存储:描述了一个存储模块,是数据保存的地方。其与输入输出两个数据流相关,且具有自身存储上限与存取频率。通常包括:

    \[\{数据存储名,输入的数据流,输出的数据流,可容纳数据量,存取频率,组成:\{数据结构\}\} \]

  • 数据处理过程:描述了数据进行处理的过程。其与输入输出两个数据流相关,且定义数据处理转化方式。通常包括:

    \[\{处理过程名,数据处理方式,输入数据流,输出数据流\} \]

概念结构设计

概念模型是独立于数据库所使用的数据模型的一种描述数据世界的方式,其通常利用E-R图来描述。

E-R图是一种描述实体、属性以及实体间联系的可视化方案,有点类似UML图。基于E-R图来描述数据架构的方式有点类似面向对象中我们对程序结构的描述,对于Is-A关系以及Have-A关系这种面向对象中所使用的概念也有所涉及,因此实际上可以用UML描述E-R图。在此不再赘述E-R图的描述方式,仅介绍描述时的注意事项:

  • 实体与属性如何划分?实体通常代表一个事物,而属性通常也是一个事物。为此给出两个准则:
    1. 作为属性,不能再被拆分,即不能再具有需要描述的性质。比如工人具有工资,而工资又分为三险一金部分和实际可得部分,因此工资作为实体更为恰当。
    2. 属性不能与其他实体间具有联系。比如病人与病房号挂钩,但是医生也同时负责多个病房号,因此病房应该作为实体。
  • 通常业务需求较为复杂时,我们对每个部门单独建立E-R图,然后进行合并。合并时需要解决冲突消除冗余
    • 冲突通常包括:
      • 命名冲突:不同E-R图对同一对象的命名不同
      • 属性冲突:包括
        • 属性域冲突:属性的对应的数据项的取值范围不同。比如A部门的工位号是5位,而B部门是6位。
        • 属性取值单位冲突:属性对应的数据项的单位不同。比如A部门用厘米,B部门用毫米。
      • 结构冲突:同一对象在不同E-R图中具有不同的结构,比如有时被当做实体而有时被当做属性,比如作为实体时包含的属性不同,比如与其他实体间的联系关系不同。
    • 消除冗余:冗余主要指冗余数据和冗余的联系。冗余数据通常可以由其他数据导出,而冗余关系通常可以通过分析其他关系而得出。通常通过分析方法或者规范化理论来导出。注意,在对数据存取性能有要求的前提下,冗余有时是必须的,比如我们时常对某个数据项进行求和,那么冗余存储该数据项的和可以显著提高效率。

逻辑结构设计

逻辑结构设计需要将我们的E-R图转化为实际的关系模式。E-R图中需要转化的对象是实体关系

对实体的转化的一般原则是一种实体转化为一种关系模式,而对关系的转化受以下原则约束:

  • 当实体间存在1:1联系,则该联系转化为一个关系模式,或者与任意端实体的关系模式合并。
  • 当实体间存在1:n联系,则该联系转化为一个关系模式,或者与n端实体的关系模式合并。
  • 当实体间存在m:n联系,则该联系转化为一个关系模式。
  • 当三个及以上实体间存在联系,则该联系转化为一个关系模式。
  • 当多个关系模式具有相同的码(候选码)时,可以进行合并。

转化完成后,还需要进行优化,主要是根据用户需求修改调整数据模型结构。通常情况下采用规范化理论来提高各关系模式的模式分解程度,以保证不会出现插入异常等情况。但是注意不是规范化程度越高越好,因为系统进行连接运算的运算开销很高,而在某些用户需求下,我们为了更高的效率可能需要降低系统对插入异常等问题的鲁棒性,而使用较低分解程度的关系模式。

同时我们还需要在这一步为用户设计外模式,在关系型数据库中主要是使用视图。

物理结构设计

在数据库管理系统已经对基本的数据底层物理存储方式进行了包装的前提下,设计数据库系统的物理结构,通常指存取方式的选取索引等物理存储结构的设计

在数据库管理系统已经对基本的数据底层物理存储方式进行了包装的前提下,数据库管理系统通常还提供多种存取方式,包括

  • 索引方法:B+树索引、hash索引等。不同的索引结构适用于不同的关系。
  • 聚簇方法:为了提高对某个属性的查询效率,而将该属性上相同值的元组存放在连续的物理块中。被选定的属性称为聚簇码。

数据库的实施与维护

数据库实施主要指

  • 将设计好的数据库通过数据定义语言严格地描述出来,从而在计算机系统中进行部署
  • 现有的数据导入新的数据库系统中,涉及数据的转换和组织。
  • 进行数据库的试运行。这一步可以采用数据规模递增的方式进行调试,同时注意系统转储恢复。

数据库运行与维护主要指

  • 数据库的转储恢复工作

  • 数据库的监测分析

  • 数据安全性控制

  • 面对新数据的加入或新的存取性能需求而进行重构

posted @ 2021-08-01 10:17  neumy  阅读(260)  评论(0)    收藏  举报