数据库设计

AAI脑图#3656472026-05-14 02:49
11430

内容详情

一、数据库设计核心定义与目标

定义

  • 依据用户需求,在 DBMS 上设计库结构、搭建数据库的全过程
    • 涵盖从需求收集到系统上线维护的完整生命周期
    • 需结合业务逻辑与技术实现进行综合规划

核心目标

  • 减少数据冗余
    • 避免重复存储相同信息,节省存储空间
    • 降低更新异常风险
  • 避免数据异常
    • 插入异常:无法单独插入部分信息
    • 删除异常:删除记录导致其他信息丢失
    • 更新异常:同一数据多处存储需同步修改
  • 保证数据完整性
    • 实体完整性(主键非空唯一)
    • 参照完整性(外键约束)
    • 用户定义完整性(业务规则约束)
  • 提升数据访问效率
    • 通过合理索引、存储结构优化查询性能
    • 平衡读写操作开销

二、数据库设计六大阶段(必背顺序)

1. 需求分析阶段

  • 核心任务:收集数据、功能、性能三类用户需求
    • 数据需求:实体、属性、关系、数据量级
    • 功能需求:增删改查操作、事务处理
    • 性能需求:响应时间、并发能力、吞吐量
  • 关键输出:数据流图 (DFD)、数据字典 (DD)
    • DFD:描述系统中数据流动与处理过程
    • DD:定义数据项名称、类型、长度、取值范围等
  • 核心地位:设计起点与根基,决定整体方向
    • 需求错误将导致后续所有设计偏差

2. 概念结构设计阶段【重点】

  • 核心任务:需求抽象,构建独立于 DBMS 的概念模型
    • 屏蔽具体数据库技术细节,聚焦业务语义
  • 核心工具:E-R 模型(实体 - 联系)
    • 图形化表达现实世界中的对象及其关联
  • 核心概念
    • 实体
      • 现实中可区分的对象(如“学生”、“课程”)
    • 属性
      • 实体的特征(如“学号”、“姓名”)
    • 联系(1:1/1:N/M:N)
      • 实体间的关系类型及基数约束
    • 弱实体
      • 依赖于其他实体存在的实体(如“订单明细”依赖“订单”)
      • 唯一标识实体的属性或属性组(主码、候选码)
  • 设计方法
    • 自顶向下
      • 先定义全局框架,再细化局部
    • 自底向上
      • 先设计局部视图,再集成全局模型
    • 逐步扩张
      • 从核心实体出发逐步扩展关联
    • 混合策略
      • 结合多种方法灵活应用

3. 逻辑结构设计阶段【重点】

  • 核心任务:E-R 模型转为 DBMS 适配的关系模式
    • 将概念模型映射为具体数据库支持的表结构
  • 核心步骤 1:E-R 图转关系模式
    • 实体→表
      • 每个强实体对应一张关系表
    • 属性→列
      • 实体属性成为表的字段
    • 联系→外键
      • 1:N 联系:在“多”端加外键
      • M:N 联系:新增关联表,含双方主键
      • 1:1 联系:可任选一端加外键或合并表
  • 核心步骤 2:关系规范化
    • 1NF(第一范式)
      • 属性不可再分,消除重复组
    • 2NF(第二范式)
      • 消除非主属性对码的部分函数依赖
    • 3NF(第三范式)
      • 消除非主属性对码的传递函数依赖
    • BCNF(Boyce-Codd 范式)
      • 消除主属性对码的部分与传递依赖
  • 核心步骤 3:模式优化
    • 反规范化:适度引入冗余提升查询性能
    • 视图设计:提供安全与简化访问接口
  • 最终输出:逻辑模式、外模式
    • 逻辑模式:全体用户共享的数据结构
    • 外模式:面向特定用户或应用的子集

4. 物理结构设计阶段【重点】

  • 核心任务:为逻辑模式设计存储结构与存取方式
    • 决定数据在磁盘上的实际组织形式
  • 存取设计
    • 主键索引
      • 自动创建,用于快速定位记录
    • 唯一索引
      • 保证字段值唯一性并加速查询
    • 聚簇索引
      • 数据行按索引顺序物理存储,提升范围查询效率
    • 聚簇(Clustering)
      • 将相关表的数据存储在同一物理区域
  • 存储设计
    • 数据存放位置
      • 文件组、表空间分配策略
    • 记录格式
      • 定长 vs 变长记录,压缩策略
    • 记录大小
      • 影响 I/O 效率与缓存命中率
  • 性能评价
    • 时间 / 空间效率
      • 查询速度 vs 存储开销权衡
    • 维护代价
      • 索引更新、重组成本
    • 响应时间
      • 关键业务操作的延迟要求
  • 核心地位:直接决定数据库运行效率
    • 是性能调优的关键环节

5. 数据库实施阶段

  • 核心任务:落地设计、建库建表 + 测试上线
    • 将设计方案转化为可运行的数据库系统
  • 主要工作
    • 建库建表建约束
      • 执行 DDL 语句创建结构
      • 设置主键、外键、检查约束等
    • 数据清洗加载校验
      • 清洗历史数据,转换格式
      • 批量导入并验证完整性
    • 程序编码调试
      • 开发应用程序接口(SQL/ORM)
      • 单元测试与集成测试
    • 系统集成试运行验收
      • 与前端、中间件联调
      • 用户验收测试(UAT)
  • 常见问题
    • 约束冲突
      • 外键引用不存在记录
    • 索引失效
      • 查询条件未命中索引或隐式类型转换
    • 性能瓶颈
      • 未优化的 SQL 或缺失关键索引

6. 数据库运行与维护阶段

  • 核心任务:长期保障库稳定、安全、高效运行
    • 贯穿系统整个生命周期
  • 核心工作
    • 转储与恢复
      • 定期全量/增量备份
      • 制定灾难恢复预案(RTO/RPO)
    • 安全 & 完整性控制
      • 用户权限管理(RBAC)
      • 审计日志、加密传输
    • 性能监控优化
      • 监控慢查询、锁等待、缓存命中率
      • 动态调整索引、参数配置
    • 库重组与重构
      • 重建碎片化索引
      • 表结构演进(如分库分表)
    • 故障备份
      • 主从复制、高可用集群部署
  • 核心特点:生命周期最长阶段
    • 投入资源最多,直接影响系统可用性

三、阶段关系与高频考点

1. 阶段关系

  • 线性迭代流程
    • 各阶段依次推进,但允许反馈修正
  • 前期错误会传递放大
    • 需求或概念设计错误将导致后期高昂修复成本

2. 核心难点

  • E-R 概念建模
    • 准确识别实体、联系与基数约束
  • 范式规范化设计
    • 判断函数依赖,合理分解关系模式
  • 索引与物理优化
    • 在查询性能与写入开销间取得平衡

3. 高频考点

  • 各阶段输入输出
    • 如需求分析输出 DFD/DD,逻辑设计输出关系模式
  • E-R 图转关系模式
    • 不同联系类型(1:1/1:N/M:N)的转换规则
  • 数据库规范化理论
    • 范式判定条件与分解算法
  • 索引设计基本原则
    • 选择性高、常用于 WHERE/JOIN 的字段建索引