跳到主要内容

ER 模型与数据建模

问题

什么是 ER 模型?如何进行数据建模?

答案

ER 模型基本概念

ER(Entity-Relationship)模型是描述实体及其关系的方法,是数据库设计的基础。

概念说明示例
实体(Entity)业务中可识别的对象用户、订单、商品
属性(Attribute)实体的特征用户名、手机号
关系(Relationship)实体之间的关联用户「下」订单

三大关系类型

关系符号示例
一对一(1:1)1 --- 1用户 ↔ 身份证
一对多(1:N1 --- N部门 ↔ 员工
多对多(M:NM --- N学生 ↔ 课程(中间表)

三大范式

范式规则违反示例
1NF字段不可再分地址字段存 "省+市+区"
2NF非主键完全依赖主键订单明细中存商品名称
3NF消除传递依赖员工表中存部门名称
范式 vs 反范式
  • OLTP(业务系统):遵循 3NF,减少冗余
  • OLAP(分析系统):适当反范式,用冗余换性能

常见面试问题

Q1: 为什么数仓中允许冗余?

答案

  • 数仓以查询性能为目标,JOIN 开销大
  • 适当冗余(如维度字段冗余到事实表)可以减少 JOIN
  • 数仓写入频率低(ETL 批量写入),冗余不会导致更新异常

Q2: 多对多关系如何建模?

答案

  • 引入中间表(关联表),存储两个实体的外键
  • 例如学生-课程:student_course(student_id, course_id, grade)

相关链接