Coursera 笔记

Module 04 · Final Project and Assessment

Approach to Database Design (Including ERD)数据库设计方法(含 ERD)

Coursera ↗

欢迎学习数据库设计方法。通过本视频,你将能够理解良好数据库设计的重要性,概述数据库设计过程的具体步骤,并明确实体关系图 (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 工具:
    1. 可视化设计:直接在工具中绘制模型。
    2. 自动生成脚本:基于设计自动生成用于创建数据库及对象的 SQL 脚本。

总结回顾

阶段 核心目标 关键产出
需求分析 明确业务需求与对象 基础对象、关系报告
逻辑设计 构建概念蓝图 (不含技术细节) 实体、属性、规范化模型
物理设计 确定数据库实际结构 表、数据类型、索引、SQL 脚本