常规实体类型的映射
常规实体类型的特征
强实体,有简单属性,有复合属性,无多值属性
映射方法
- 为E-R图中的每个常规(强)实体类型E,创建一个关系模式E
- 实体类型E的简单属性,直接放入关系模式E
- 实体类型E的复合属性,只把其简单成员属性放入关系模式E
- 如果实体类型E有多个候选键,选择其中一个,作为关系模式E的主键,其他的作为备用键
- 实体类型E的每一个实体实例,对应关系模式E的一个元组
二元多对多联系类型的映射
映射方法
- 为E-R图中二元一对多联系的每个参与实体类型E1和E2,创建关系模式E1和E2
- 使用一个新的关系模式R来表示两个参与实体之间的多对多联系
- 主键为两个参与实体的主键的并集
- 创建2个外键约束,参照引用相应的参与实体
- 联系的描述性属性,放入到这个新添加的关系模式R中
二元一对多联系类型的映射
第一种映射方法:外键方法
- 为E-R图中二元一对多联系的每个参与实体类型E1和E2,创建关系模式E1和E2
- 选中参与联系的多方实体所对应的关系模式,为其添加一个外键(是参与联系的一方实体的主键)
- 联系的属性,也一同放入多方实体
- 多方是子实体,一方是父实体
部分参与的时候使用null值进行合并
第二种映射方法:添加关联关系法
二元多对多特例
二元一对一联系类型的映射
第一种映射方法:外键方法
同二元一对多,任选一方合并外键
第二种映射方法:合并关系方法
为E-R图中二元一对一联系的两个参与实体类型E1和E2,创建关系模式E,包含了这两者的全部属性和联系的属性
第三种映射方法:添加关联关系法
二元一对多特例
强实体/弱实体的映射
映射方法
-
为弱实体集A创建关系模式A
关系模式A的属性由所有的弱实体集属性加上所依赖的强实体集的主键构成
关系模式A的主键由强实体集B的主键加上弱实体集A的分辨符构成 -
在关系模式A 上建立外键约束
外键约束具有“级联删除”规则
多值属性的映射
映射方法
将包含多值属性M实体集R转换为两个关系R1和R2
- R1包括该实体集中除了多值属性以外的所有属性
- R2包含两组属性
- 实体集R的主码构成R2的主键
- 多值属性M本身(此时已经转换为单值了!)
R2的主键R1主键加单值属性M
外键约束具有“级联删除”规则(cascade),适用于update和delete
复杂属性的映射
映射方法
先考虑多值属性,然后复合属性
n元联系类型的映射
映射方法
- 为E-R图中n元联系的每个参与实体类型E1,E2,…En,创建关系模式E1,E2,…En
- 为创建一个新的关系模式R,表示这个n元联系
- 把所有参与实体的主键作为关系模式R的外键
- 关系模式R的主键通常由所有参与n元联系的实体的主键的并集构成
- 如果有一个实体类型E的基数约束是1,那么R的主键就不包括这样的外键属性
- n元联系的描述性属性也应该加入到关系模式R中
关联实体的映射
映射方法
为关联实体创建一个关系模式R
- 如果关联实体还没有分配主键
- 把所有参与实体的主键的并集作为关联实体对应的关系模式R的主键
- 把所有参与实体的主键作为关联实体对应的关系模式R的外键
- 如果关联实体已经分配了主键
- 关联实体的主键可以作为其所对应的关系模式R的主键
- 把所有参与实体的主键作为关联实体对应的关系模式R的外键
递归联系类型的映射
一对多递归联系
多对多递归联系
聚集(Aggregation)的映射
直接使用定义该聚集的联系集所创建出来的关系模式当作二元联系即可
超类/子类联系类型的映射
第一种方法
- 为高层实体集创建一个模式;
- 为每个低层实体集创建一个关系模式:
- 属性包括对应于低层实体集的每个属性
- 属性包括对应于高层实体集主码的每个属性
- 高层实体集的主码属性同时也是所有低层实体集的主码属性
- 在低层实体集上建立外码约束,其主码属性参照创建自高层实体集的关系的主码
第二种方法
如果概化是不相交且完全的 :
不存在同时属于两个同级的低层实体集的实体,高层实体集的任何实体都是某个低层实体集的成员
- 不需要为高层实体集创建任何关系模式
- 只需要为每个低层实体集创建一个关系模式
- 属性包括对应于低层实体集的每个属性
- 属性同时包括对应于高层实体集的每个属性
- 将高层实体集的主码作为低层实体集的主码
不好用还是别用了