第 6 章 · ER 模型与概念设计

ER 模型(实体-联系)先画清「有哪些实体、怎么联系」,独立于具体 DBMS,再落到关系模式。

6.1 实体、属性、联系

  • 实体(Entity):可区分的客观对象,如「学生张三」「课程数据库」。同类实体集合叫实体集(Student)。
  • 属性(Attribute):实体的特征,如学号、姓名。码属性(下划线标)唯一标识实体。
  • 联系(Relationship):实体间关联,如「学生课程」;联系也可带属性(如「成绩」)。
        ┌─────┐
        │学生 │──────── 选课 ────────┐
        └──┬──┘  (学号,姓名,年龄)     │
           │                          ▼
           │                      ┌──────┐
        ┌──▼──┐                   │课程  │
        │班级 │                   │(课号,课名)│
        └─────┘                   └──────┘

6.2 联系的基数:1:1 / 1:N / M:N

基数比描述一个实体能关联多少个另一实体:

基数含义
1:1一对一班级 ↔ 班长
1:N一对多班级 → 学生
M:N多对多学生 ↔ 课程(选课)

基数决定落表:1:1 和 1:N 可只靠外码合并,M:N 必须单独建联系表。

6.3 ER 图符号

  • 矩形 = 实体集,椭圆 = 属性,菱形 = 联系。
  • 联系两端标基数:1NM
  • 码属性名加下划线;多值属性双椭圆;弱实体双矩形。

画图要点:先找实体,再找联系,最后补属性;联系是「动作」(选、属于、雇佣),不是名词。

6.4 ER 图到关系模式的转换规则

  1. 每个实体集 → 一张表,属性即列,码即主键。
  2. 1:1 联系:任选一端实体,把另一端主键作外码并入(联系属性一并放入)。
  3. 1:N 联系:把「1」端主键作外码并入「N」端表。
  4. M:N 联系单独建联系表,主键 = 两端主键组合((学号, 课程号)),联系属性(成绩)作列。
学生(学号 PK, 姓名, 班级号 FK)     ← 1:N:学生并入班级外码
课程(课号 PK, 课名)
选课(学号 FK, 课号 FK, 成绩)        ← M:N:单独建表,主键(学号,课号)

转完的每张表再用第 5 章范式验收、必要时拆分。

对比:概念 / 逻辑 / 物理三阶段——概念(ER 图)面向业务,谈实体与联系,不管实现;逻辑(关系模式 + 范式)把 ER 图翻成表并规范化,不管存储;物理(索引、聚簇、分区,第 9 章)面向 DBMS/硬件,决定数据落盘。即第 1 章三级模式思想在设计流程的体现。