数据库设计
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 范式)
- 消除主属性对码的部分与传递依赖
- 1NF(第一范式)
- 核心步骤 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 的字段建索引
