数据库7-数据库设计

数据库设计

数据库设计:根据用户需求研制数据库结构的过程

  • 数据库结构设计:针对给定的应用环境,进行数据库的模式和子模式设计,包括概念设计,逻辑设计和物理设计,属于静态模型设计
  • 数据库行为设计:确定数据库用户的行为和动作,属于动态模型设计

设计方法:直观设计,New orleans方法,基于实体-关系的方法,3NF设计方法,面向对象的方法(ODL),辅助软件CASE…

设计过程

  • 需求分析:明确系统需要完成的任务
  • 概念设计:将现实世界抽象地理解和表达
  • 逻辑设计:概念模型转换具体的数据模型
  • 物理设计:逻辑模型转化为确定的物理存储结构
  • 实现阶段:进行数据库的构建工作,包括数据库的应 用程序开发和调试,数据的录入
  • 运行和维护阶段:数据进行备份和维护,以保证数据库系统的效率

概念设计

概念模型:生成能准确反映用户组织和实用信息需求的抽象信息结构

  • 真实充分地反映现实世界
  • 易于理解更改和转换
  • 描述概念模型最常用的工具:实体-关系模型;
  • 易于转换成关系、网状、层次等各种数据模型

概念数据模型

  • 面向用户、面向客观世界的模型
  • 用来描述现实世界的概念化结构,与具体DBMS无关
  • 概念数据模型必须转换成逻辑数据模型才能在DBMS中实现

E-R图

ER图是一种面向问题的概念模型,只关心现实世界的事物,特征和联系,用简单的图形方式描述显示世界的数据

  1. 实体:用 矩形框 表示
  2. 联系:一个或多个实体之间的关联关系,用菱形表示 ,用无向边连接
  3. 属性:用椭圆表示,现实世界的事物尽量看作属性,属性不能有需要描述的性质,不能与其他实体具有联系;

数量关系表示

  • 一对一联系:对于实体A中的每一个实体,实体B中至多有一个实体与之联系,反之亦然;
    • 完全一对一:$[1]\to [1]$,严格的对应关系;
    • 不完全一对一:$[0,1]\to [0,1]$
  • 一对多联系:对于实体A中的每一个实体,实体B中有多个实体与之联系,对于实体B中的每一个实体,实体A中至多有一个实体与之联系;
  • 多对多联系:对于实体A中的每一个实体,实体B中有多个实体与之联系,反之亦然

属性分类

  • 简单属性/复合属性

  • 单值属性/多值属性:多值属性用双椭圆表示,一般需要转化成弱实体,用双线矩形表示,其联系用双菱形框表示

  • 派生属性:通过具有相互依赖的属性推导出来的属性称为派生属性,用虚线椭圆形与实体相连

  • 空值属性

设计方法

  1. 自顶向下:采用总分方式将大的概念模式逐步分解为更详细的较小划分模式
  2. 逐步扩张:逐步扩张 采用了层状扩展的方式,先定义出用户需求中核心的概念结构,然后在此基础上向 外扩展,逐步将非核心的需求融入到模式中,最终完成系统的概念结构设计
  3. 自底向上:首先构建起局部概念模式,然后再向上组合成全局模式
    数据抽象:对需求分析阶段收集到的数据进行分类、组织,确定实体,实体的属性和联系数量关系
    1. 分类:定义某一类概念作为现实世界的彝族对象的类型,抽象了对象值和型之间的语义
    2. 聚集:定义了某一类型的组成成分,抽象了对象内部类型和成分的语义
    3. 概括/继承:定义类型之间的某一子集联系,抽象了类型之间的语义

ER图绘制步骤

  1. 选择局部应用

  2. 逐一设计分ER图

  3. 集成分图,进行合并和修改;

    • :实体在不同层抽象成不同的类型,不同的ER图联系数量关系不同

逻辑设计

  • 逻辑设计依赖于实现的DBMS基础
  • 逻辑设计的任务是为了概念结构设计阶段生成的全局ER图转换成特定DBMS支持的数据模型

ER模式向关系模型的转换

  • 实体联系和属性转换成关系的集合表示
  • 实体-关系模式,实体属性-关系属性,关系的键-实体的键
  • 联系相连的实体的键转换成关系模式的最佳实践:
    1. 1:1的联系:与任意一端的关系模式合并
    2. 1:n的联系:既可以独立,也可以和n端合并
    3. m:n的联系:转换成一个关系模式,需要识别外码
    4. 在ER图中,用下划线表示主码,波浪线表示外码

模式优化

用关系理论规范化理论对关系数据模型进行优化

  • 确定范式的使用
  • 实现规范化
  • 反范式设计

物理设计

  • 存储结构的设计:数据存放的位置,确定系统的配置
  • 存取方法的设计:
    • 聚簇:节省存储空间,提高查询速度
    • 索引:提高检索速度,避免重复值的记录,保证数据完整性
    • 基于HASH:计算Hash值获得存取地址