以二元联系类型的转换为例

实体类型的转换:将每个实体类型转换成一个关系模式,实体的属性即为关系模式的属性,实体标识符即为关系模式的键。

联系类型的转换:

  1. 若实体间联系是1:1,可以在两个实体类型转换成的两个关系模式中任意一个关系模式的属性中加入另一个关系模式的键(作为外键)和联系类型的属性。
  2. 若实体间联系是1:N,则在N端实体类型转换成的关系模式中加入1端实体类型的键(作为外键)和联系类型的属性。
  3. 若实体间联系是M:N,则将联系类型也转换成关系模式,其属性为两端实体类型的键(作为外键)加上联系类型的属性,而键为两端实体键的组合。

实例:教学管理的ER图转换成关系模式集

教学管理的ER图

MySQLER图转换关系模式用列表表示_数据库

第一步:把三个实体类型转换成三个模式:

系(系编号,系名,电话)

教师(教工号,姓名,性别,职称)

课程(课程号,课程名,学分)

第二步:

1.对于1:1联系“主管”,可以再“系”模式中加入教工号(教工号为外键,用波浪线表示);

2.对于1:N联系“聘用”,可以再“教师”模式中加入系编号和聘期两个属性(系编号为外键);

3.对于1:N联系“开设”,可以再“课程”模式中加入系编号(系编号为外键)

这样得到的三个模式成如下形式:

MySQLER图转换关系模式用列表表示_数据库_02

第三步:对于M:N联系“任教”,则生成一个新的关系模式:

MySQLER图转换关系模式用列表表示_多对多_03

第四步:整合后关系模式如下:

MySQLER图转换关系模式用列表表示_外键_04

如何处理E-R图中的“关系”及“关系的属性”

• 仅在多对多关系的情况下为关系提供属性。

• 如果两个实体之间的关系是多对多,我们将需要一个额外的关系表,新表应该至少有两个属性(外键)来自每个表(它们各自的主键)。

• 如果多对多关系没有属性,那么就不用第三张表,可以利用json列表来存放这种关系。