如何根据ER图绘制RM图

939 阅读2分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

根据ER图(Entity Relationship Diagram, 实体-关系图)绘制RM图(Relational Data Model Mapping, 关系型数据模型图)的步骤如下:

1. 对于每个常规实体(非弱实体)E,依照下面创建关系R:

  • 属性:E的所有简单属性,即不要多值属性,不要派生属性(衍生属性),不要复合属性但保留复合属性的叶子属性
  • 键:选择E的一个属性作为该关系的主键

对于父类实体P的每个特化的实体E, 依照下面创建关系R:

  • 属性:P的键的属性 + E的所有简单属性
  • 键:P的键

2. 对于每个强实体E的弱实体W,依照下面创建关系R:

  • 属性:W的所有简单属性,并且包含一个来自E的外键
  • 键:外键 + W的部分键

3. 对于每个1:1的关系类型B,设E和F为相关实体,S和T是相关关系:

  • 通常将完全参与的一方选为S
  • 将T的主键的属性添加至S作为外键
  • 将B的所有简单属性添加为S的属性(或者:将两个实体、关系合并成一个单独的关系,尤其是当两者完全参与 并且 不参与其他关系 时)

注:两侧都partial或都是total无所谓,随便将一侧的primary key放在另一侧做foreign key,同时带过来的还有relation上的attr

5. 对于每个1:N的关系类型B,设E(1侧的实体类型)和F(N侧的实体类型)为参与的实体,S和T是相关关系:

  • 将S(1侧对应的关系)的主键的属性添加至T(N侧对应的关系)作为外键
  • 将关系中的所有简单属性添加至T

6. 对于每个N:M的关系类型B,创建一个新的关系R。设E和F为参与的实体类型,S和T是相关的关系:

  • 属性:将S的键和T的键作为外键,加上关系B所有的简单属性
  • 键:S和T的键

7. 对于每个多值属性A,创建一个新关系R。让A成为E的一个属性:

  • 属性:
    • 如果A是一个简单属性,讲E的键拿来作为外键
    • 如果A是一个复合属性,将E的键作为外键,和A的简单属性放在一起
  • 键:所有属性

8. 对于每个n元关系(n>2),创建一个新的关系:

  • 属性:如第5步
  • 键:如同第5步,除非其中一个实体的参与率是1,它的键可以被用作一个新关系的键