Module 04 · Final Project and Assessment
Approach to Database Design (Including ERD)数据库设计方法(含 ERD)
欢迎学习数据库设计方法。通过本视频,你将能够理解良好数据库设计的重要性,概述数据库设计过程的具体步骤,并明确实体关系图 (ERD) 工具的作用。
为什么需要良好的数据库设计?
一个精心设计的数据库是任何数据驱动项目成功的基石。它直接影响以下关键指标:
- 数据完整性:确保信息的准确与可靠。
- 减少数据冗余:节省存储空间并降低维护难度。
- 应用性能:优化查询速度与响应时间。
- 用户满意度:提供流畅、一致的使用体验。
重要
前期投入,后期省钱:在设计阶段投入充足时间,可以避免后期产生高昂的修复成本。
数据库设计的三个关键阶段
1 需求分析阶段 (Requirements Analysis)
此阶段的核心是与利益相关者 (Stakeholders) 紧密合作,收集并分析业务信息与政策。
- 核心任务:识别基础对象及其相互关系。
- 案例:在图书馆场景中,“人”借阅“书”。需识别书的信息(书名、ISBN、作者)和人的信息(姓名、地址)。
- 数据获取方法:
- 审查现有存储:查看电子格式或纸质系统(仅作为信息源,而非起始模板)。
- 用户访谈:确定当前数据使用情况,收集改进意见。
- 输出成果:报告、数据图表或用于校验的演示文稿。
2 逻辑设计阶段 (Logical Design)
将需求分析的成果转化为实体 (Entities)、属性 (Attributes) 和关系 (Relationships),暂不涉及技术实现细节。
- 从对象到实体:对象(如书、人)演变为实体。需确保对象是独立实体而非其他对象的特征。
- 从特征到属性:
- 姓名:拆分为“名 (First Name)”和“姓 (Last Name)”。
- 地址:拆分为街道、城市、州、邮编,以提高存储效率。
- 处理多对多 (Many-to-Many) 关系:
- 问题:一人可借多书,一书可被多人借(产生歧义)。
- 方案:引入关联实体 (Associative Entity)。例如增加“借阅 (Loan)”实体,将一个多对多关系拆分为两个一对多关系。
- 建立唯一标识:
- 为“书”使用
ISBN作为主键。 - 为缺乏唯一属性的“人”引入 ID 属性。
- 为“借阅”记录创建唯一的
Loan ID。
- 为“书”使用
- 规范化 (Normalization):
- 1NF:消除同一属性中列出多个作者的情况。
- 2NF/3NF:创建独立的“作者”实体,建立作者与书的多对一关系。
- 提示:OLTP 系统追求 3NF 以提高事务效率;OLAP 系统则偏向反规范化以增强读取性能。
3 物理设计阶段 (Physical Design)
决定数据库的最终呈现形态,需考虑特定数据库管理系统 (DBMS) 的限制。
- 核心考虑因素:支持的数据类型、命名规则、索引、约束。
- 实施转化:
- 逻辑设计中的“实体”转化为表 (Table)。
- “属性”转化为带类型的列 (Column)。
- 定义键 (Keys)(主键与外键)。
- 命名规范:实施统一的命名惯例,确保所有团队成员都能理解模式 (Schema)。
ERD 工具的作用
实体关系图 (ERD) 设计器在设计过程中具有不可估量的价值。
- 功能:用于可视化地创建实体关系图。
- pgAdmin ERD 工具:
- 可视化设计:直接在工具中绘制模型。
- 自动生成脚本:基于设计自动生成用于创建数据库及对象的 SQL 脚本。
总结回顾
| 阶段 | 核心目标 | 关键产出 |
|---|---|---|
| 需求分析 | 明确业务需求与对象 | 基础对象、关系报告 |
| 逻辑设计 | 构建概念蓝图 (不含技术细节) | 实体、属性、规范化模型 |
| 物理设计 | 确定数据库实际结构 | 表、数据类型、索引、SQL 脚本 |