MD 更新:未知
graph TD
    %% 输入数据
    A1[当前和未来应用的数据要求] --> B
    A1 --> C
    A2[数据处理要求] --> B
    A2 --> C
    A2 --> D
    A2 --> E
    
    %% 阶段1
    B[需求分析] -->|输出| B_Out[数据流图 / 数据字典 / 需求说明书]
    B --> C
    
    %% 阶段2
    C[概念结构设计] -->|输出| C_Out[E-R 模型]
    C -->|独立于 DBMS 的概念模型| D
    
    %% 阶段3
    D1[转换规则 / 规范化理论] --> D
    D2[DBMS 特性] --> D
    D[逻辑结构设计] -->|输出| D_Out[关系模式]
    D -->|视图 / 完整性约束 / 应用处理说明书| E
    
    %% 阶段4
    D2 --> E
    E1[硬件 / OS 特性] --> E
    E[物理设计]

需求分析

  • 数据流图
  • 数据字典
  • 需求说明书

概念结构设计

flowchart LR
A[抽象数据] --> B[设计局部ER模型]
B --> C[合并局部模型消除冲突]
C --> D[重构优化消除冗余]

E-R图集成方法

  • 一次性集成
  • 逐步集成

集成产生冲突及解决方法

  • 属性冲突:同一对象
  • 命名冲突:同一对象
  • 结构冲突:同一对象在不同应用中具有不同的抽象,以及同一实体在不同局部 E-R 图中所包含的属性个数和属性排列次序不同

逻辑结构设计

E-R图向关系模式转换

  • 实体向关系模式转换
  • 联系向关系模式转换

关系模式的规范化

确定完整性约束

  • 实体完整性约束:Key 不能空值
  • 参照完整性约束:外键必须是其他的主键或空值
  • 自定义完整性约束

用户视图确定

  • 根据数据流图确定处理过程使用的视图
  • 根据用户类别确定不同用户使用的视图

数据库性能优化

集中式数据库

系统软件

  • 进程优先
  • CPU 使用权

数据库设计

  • 分区-分库-分表
  • 物化视图
  • 索引
    • 查询频繁-建索引
    • 修改频繁-避免索引
  • SQL 优化
    • 不相干子查询代替相干子查询
    • 用 IN 代替 OR
  • 应用软件
    • 数据库连接池
    • 全局查询树的变换

分布式数据库

通信代价

  • 多副本策略
  • 查询树分解