db_6 数据库设计

数据库规范设计法

数据库设计

定义

是指对于一个给定的应用环境,设计优化的数据库逻辑结构和物理结构,建立数据库,使之能够有效地存储数据,为开发满足用户需求的应用系统奠定基础

特点

  • 要把数据设计和处理设计密切结合起来

    • 结构/数据设计与行为/处理设计结合
  • 与硬件、软件和管理紧密相关

    • “三分技术、七分管理、十二分数据收集”

手工试凑法方法

根据应用的数据要求与处理要求,直接设计数据库的结构

image-20241228161215494

缺点:

  • 数据间关系复杂,使用要求各式各样,很难仅凭经验进行设计
  • 把数据的逻辑结构,物理结构、处理要求等一起考虑,很难对模式进行评价和优化。用户需求一旦发生变化,数据结构很难随之发生变化
  • 数据库设计与具体的DBMS紧密结合,移植困难
  • 缺乏文档资料,难于与用户交流,对设计难于评审
  • 难以由多个人合作进行设计

规范设计方法

定义:

运用软件工程的思想和方法,把整个设计过程划分为若干阶段,把复杂的大问题分为若干相对简单的小问题,每个阶段只解决整个设计中的部分问题

迭代和逐步求精的过程

image-20241228161446232

六个阶段与基本任务(*)

  • 需求分析
    • 对应用环境进行详细调查,收集支持系统目标的基础数据及其处理
  • 概念结构设计
    • 通过对用户需求进行综合、归纳与抽象,形成独立于数据库逻辑结构与具体DBMS的概念模
    • 可以用E-R图等表示
  • 逻辑结构设计
    • 将概念结构转换为某个DBMS所支持的数据模型,并进行优化
    • 将得到的逻辑结构转换成特定的DBMS能处理的模式、子模式;
  • 物理结构设计
    • 设计数据库在物理设备上的存储结构和存取方法
    • 一是确定数据库的内模式
    • 二是对物理结构进行时间与空间效率的评价;
  • 数据库实施
    • 是建立数据库的过程。用DBMS的DDL描述三级模式,并调试产生目标模式。开发应用程序,组织数据入库并试运行;
  • 数据库运行和维护
    • 在数据库正式运行后,由DBA执行对数据库经常性的维护工作,包括数据库转储与恢复、数据库控制、数据库性能监控、数据库的重组与重构

需求分析、概念结构设计可以独立于DBMS

逻辑结构设计、物理结构设计密切关联DBMS

image-20241228163102580

需求分析

目标

对应用环境进行详细调查收集支持系统目标的基础数据及其处理

调查的重点是“数据”和“处理”

获得用户对数据库的如下要求

  • 处理要求:指用户要完成什么处理功能,对处理的响应时间和 处理方式的要求
  • 信息要求:指系统中所涉及的数据及数据之间的联系。具体收 集数据的名称、类型、长度等,确定数据之间联系的类型
  • 安全性与完整性的要求

方法

两个阶段

  • 调查用户实际要求,与用户达成共识
  • 分析、表达用户的需求
    • 数据流图表达数据和处理之间的关系
    • 数据字典描述系统中各类数据

数据流图(DFD)

以图形方式来表达系统的功能、数据在系统内部的逻辑流向和逻辑变换过程

采用结构化分析方法SA 从最上层的系统组织机构入手

自顶向下逐步分解处理功能以及它们所用的数据

形成若干层次的数据流图

数据字典

  • 是对数据的集中的系列说明。包含每一个数据元素的名字、含义等各方面的描述

    • 数据流图中提取出所有原子数据项

    • 有联系的数据项组合起来形成数据组

    • 以数据组为单位,写出数据项的如下定义

      • 语义定义:名字,实际含义等
      • 类型定义:数据类型、数据宽度、小数位数等
      • 完整性约束定义:值约束、空值约束以及其他比较复杂的完整性约束

      image-20241228164023243

    • 根据用户和实际领域的信息模型需要补充其他数据项及其定义

  • 还可以包括数据在系统内的传输路径、数据存储位置和处理过程信息等

  • 需求分析阶段的数据字典,可看成是数据元素表
  • 数据库实施阶段建立起的数据字典,是数据库系统重要组成部分

概念结构设计

通过对用户需求进行综合、归纳与抽象,形成独立于数据库逻辑结构与具体DBMS的概念模

ER法

思想是用E-R图描述现实世界的信息,这种信息结构称为概念结构 (概念模型),然后根据具体系统的要求将概念结构转换成特定系统所能接 受的逻辑结构(层次、网状、关系)

两部分组成

  • 用E-R图描述现实世界
  • 将E-R图转换成相应的数据模型

ER图

  • 实体:长方形
  • 属性:椭圆形,无向边连接实体与其属性,联系与其属性
  • 联系:菱形 无向边连接菱形与有关实体,标上联系的类型

image-20241228165241625

image-20241228165343902

  • 自顶向下
  • 自底向上
  • 逐步扩张
  • 混合策略

自底向上的ER图设计法

分为两个阶段

  • 基于E-R法构造局部E-R图

  • 局部E-R图综合形成总E-R图

局部ER图设计

  • 选择局部应用
  • 以需求分析中得到的数据元素表为基础,建立实体模型
  • 确定实体之间的联系类型
  • 用E-R图表示这些实体与实体之间的联系,形成分E-R 图

建立实体模型的关键是确定实体及其属性

  • 实体模型的建立方法
    • 对数据字典进行初步抽象,得到实体和属性,然后再 按原则进行必要调整
  • 数据抽象机制
    • 分类:定义某一概念作为现实世界中一组对象的类型。这些对象 具有某些共同的特性和行为。如 实体型
    • 聚集:定义某一类型的组成成分。 如属性的聚集组成了实体型
    • 概括:定义类型之间的一种子集 联系

实体模型的调整原则

  • 属性必须 是不可分的数据项
  • 属性不能与其他实体具有联系
  • 实体和描述它的属性之间保持1:1或n:1的联系

综合形成总ER图

两种方法

  • 多个分E-R图一次集成
  • 逐步集成,用累加的方式一次集成两个分E-R图
  • 合并: 解决冲突,将各分E-R图合并起来生成初步E-R图
    • 冲突包括
      • 属性冲突
        • 讨论协商解决
      • 命名冲突(同名异义,异名同义)
        • 建立命名表,统一命名,异名同义的名字可标为别名
      • 结构冲突
        • 同一对象在不同应用中有不同抽象。如在一应用中为实体, 在另一应用中为属性
          • 遵守实体与属性的划分原则,把属性变为实体或实体变为属性, 使同一对象具有相同的抽象
        • 同一实体在不同分E-R图中属性个数、次序不同
          • 同一实体的属性通常取分E-R图中属性的并,再适当调整次序
        • 实体之间的联系在不同分E-R图中呈现不同类型
          • 根据语义加以综合或调整
  • 修改和重构:消除不必要的冗余,生成基本E-R图
    • 冗余的数据:可由基本数据导出的数据
    • 冗余的联系:可由其它联系导出的联系
    • 消除方法
      • 分析法
      • 规范化方法

image-20241228171624772

image-20241228171726425

逻辑结构设计

任务是将概念结构转换为某个DBMS所支持的数据模型,并进行优化

将得到的逻辑结构转换成特定的DBMS能处理的模式、子模式

  • 形成初始关系数据库模式
  • 关系模式规范化
  • 关系模式优化
  • 子模式定义

image-20241228204040666

E-R图向关系模型的转换规则

  • 一个实体型转换为一个关系模式
  • 一个联系转换为一个关系模式

    • 若联系为1:1,则每个实体的码均是该关系的候选码
    • 若联系为1:n,则该关系的码是n端实体的码
    • 若联系为n:m,则该关系的码是诸实体码的组合
  • 三个或三个以上实体间的多元联系,转换为一个关系模式

    • 与该多元联系相连的各实体的码以及联系的属性转换为关系的属性
    • 关系的码为各实体码的组合
  • 具有相同码的关系可以合并

image-20241228204704829

image-20241228204724310

  • 弱实体类型的转换
    • 对于每个弱实体类型,创建一个新的关系,该关系中包含所有 弱实体类型的属性
    • 把标识关系(被依赖关系)的主码添加到新关系中,并将其作 为新关系的外码
    • 新关系的主码是标识关系的主码和弱实体类型的部分标识(码)的组合

image-20241228205115343

  • 超类/子类联系的转换
    • 为超类和每个子类创建单独的关系
    • 在超类所创建的关系中,包含所有子类成员都共有的属性, 包括主码
    • 在超类中包含一个(或多个)属性作为子类判定符 EmployeeType
    • 在为每个子类所创建的关系中,包含超类的主码以及子类特有的属性

image-20241228205210226

关系模型的规范化

按照数据依赖的理论,逐一分析转换所得关系模式

判断是否存在部分函数依赖、传递函数依赖、多值依赖等,确定它们的范式等级;

关系模型的优化

按应用系统的处理要求,确定是否进行模式合并或分解

为了提高存取效率和存储空间的利用率,可以对关系模式进行必要的分解

  • 水平分解
    • 是把关系的元组分为若干子集合,定义每 个子集合为一个子关系,以提高系统效率
    • 80/20原则
      • 经常使用数据分解出来作为 一个关系
    • 数据分片
      • 如果关系R上具有n个事务,而且多数事务存取的数据不相交,则R可以分解为少于或等于n个子关系
  • 垂直分解
    • 是把关系模式R的属性分解为若干子集合,形成若干子关系模式
    • 原则:经常在一起使用的属性从R中分解出来形成一个子关系模式
    • 必须确保无损连接性和保持函数依赖

设计用户子模式

根据局部应用的需求,结合具体DBMS的特点,设计用户外模式(视图)

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

可以对不同级别的用户定义不同的视图,以保证系统的安全性

通过定义视图降低复杂查询的难度,简化用户对系统的使用

物理结构设计

数据在物理设备上的存储结构与存取方法

存储结构

  • 确定存放位置
    • 经常存取部分与和存取频率较低部分分开存放
    • 数据和日志备份放于不同的磁盘上
  • 确定系统配置、
    • 确定系统配置变量、存储分配参数,进行物理优化

存取方法

  • 索引方法(加速查询)

    • 索引记录/索引项,是索引文件的记录,包括两个域
      • 索引域:存储数据文件中一个或一组域的一个值(K)
      • 指针:指向索引域值为K的记录所在磁盘块的地址
    • B+树索引
      • 树中所有关键字都按递增次序从左到右安排在叶节点上, 并且链接起来
      • B+树能同时进行随机查找和顺序查找
    • 选择索引域原则
      • 经常在查询条件中出现的属性
      • 经常作为最大值和最小值库函数的参数
      • 经常作为连接属性
    • 索引并非越多越好
  • 聚集方法(加速查询)

    • 把关系中某个属性/组(聚集键)值相同的记录集中存放在连续的物理块
    • 一个关系只能参加一个聚集
    • 原则
      • 经常进行连接操作的关系可建立聚集
      • 单个关系的某组属性经常进行相等比较
      • 关系的某个属性组值重复率高
    • 问题
      • 建立与维护聚集系统开销很大
      • 对于更新操作远远多于连接操作的关系不应使用聚集方法
  • HASH方法(快速存取)

    • 通过HASH函数将记录关键字转换成地址

      image-20241228213902034

    • 如果关系的属性主要出现在等连接条件中, 或出现在相等比较条件中,而且满足下列 条件之一,可以选择该方法

      • 关系的大小可预知,而且不变
      • 如果关系大小动态改变,则须DBMS提供动态 HASH存取方法