ER 建模与数据库设计流程

kp-006 · 关系理论与范式入门约 20 分钟已校对

前置知识点

前置:

相关知识点

相关:

学习进度:

一句话定义

ER 建模(Entity-Relationship Modeling)用「实体—属性—联系」三要素把业务世界抽象为图示模型,再按系统化流程翻译成关系模式,是从需求到表结构之间最重要的中间表示。

为什么重要

前置知识

kp-002(关系、候选键、外键)。

核心概念

原理与机制

建模的核心判断有两个。其一是「实体还是属性」:当某特征本身有独立生命周期或一对多特征(如用户的多个收货地址),应提升为实体,否则永远做属性。其二是「基数决定落表方式」:M:N 联系若强行放进某一端(存逗号分隔列表),会同时违反第一范式并丧失可查询性——这就是学生选课表(student_id, course_id)必然独立成表的理论原因。弱实体靠「强实体主键 + 区分键」构成复合主键(如 order_items(order_id, item_no)),天然与父实体同生共死。概念设计阶段的产出应与任何具体 DBMS 无关,物理考量(类型、索引)留到最后一阶段,防止过早优化污染逻辑模型。

实例或案例

电商最小模型:实体 Customer、Order、Product、Address;联系「下单」Customer-Order 为 1:N(一个客户多个订单,订单全参与——没有客户的订单不存在);「订购」Order-Product 为 M:N 且带自身属性数量与成交价,独立成表 order_items(order_id, product_id, qty, price);Address 与 Customer 为 1:N 独立成表(多值属性提升为实体)。得到的四张表正是后续 kp-007 范式分析的对象。

常见误区

自测题

  1. 学生与课程为什么必须建中间表? 答:二者是 M:N 联系,一个学生选多门课、一门课被多个学生选,任何一端存列表都违反第一范式且无法用外键保证参照完整性。
  2. 弱实体的主键如何构成? 答:所属强实体的主键 + 自身区分键组成的复合主键,例如 order_items(order_id, item_no)。

公式或模型

本节不适用:本知识点为方法论,定量模型见 kp-007 的函数依赖体系。

图示

Customer Order Product 下单 1:N 订购 M:N order_items
电商核心 ER 片段:M:N 联系「订购」落地为 order_items 中间表

直观类比

ER 建模像画建筑平面图:先定「房间」(实体)与「门」(联系),确认动线合理后才开始砌墙(建表);跳过平面图直接砌墙,返工时砸掉的是承重墙。

与其他知识点的关系

kp-007 用函数依赖与范式检验本流程产出的关系模式;kp-008 说明何时有意破坏该规范;kp-003 的约束类型是逻辑设计落库时的工具箱。

延伸阅读