在概念模型向逻辑模式转换过程中要遵循以下规则。
规则1.1 实体类型的转换:将每个实体类型转换成一个关系模式,实体的属性即为关系的属性,实体的码即为关系模式的码。
规则1.2 联系类型的转换:根据不同的联系类型做不同的处理。
1)若实体间联系是1∶1,可以在两个实体类型转换成的两个关系模式中任意一个关系模式中加入另一个关系模式的码和联系类型的属性。
2)若实体间的联系是1∶n,则在n端实体类型转换成的关系模式中加入1端实体类型的码和联系类型的属性。
3)若实体间联系是m∶n,则将联系类型也转换成关系模式,其属性为两端实体类型的码加上联系类型的属性,而码为两端实体码的组合。
4)3个或3个以上的实体间的一个多元联系,不管联系类型是何种方法,总是将多元联系类型转换成一个关系模式,其属性为与该联系相连的各实体的码及联系本身的属性,其码为各实体码的组合。
5)具有相同码的关系可合并。
【例2-1】 将图2-10中含有1∶1联系的E-R图根据上述规则转换为关系模式。
图2-10 二元1∶1联系转换为关系模式的实例
该例包含两个实体,实体间存在着1∶1的联系,根据规则可转换为如下关系模式(带下画线的属性为码)。
方案一:“负责”与“职工”两关系模式合并,转换后的关系模式为:
职工(职工号,姓名,年龄,产品号)
产品(产品号,产品名,价格)
方案二:“负责”与“产品”两关系模式合并,转换后的关系模式为:
职工(职工号,姓名,年龄)
产品(产品号,产品名,价格,职工号)
将上面两个方案进行比较,方案一中,由于并不是每个职工都负责产品,就会造成产品号属性的NULL值较多,所以,方案二比较合理一些。
【例2-2】 将图2-11中含有1∶n联系的E-R图根据上述规则转换为关系模式。
图2-11 二元1∶n联系转换为关系模式的实例
该例包含两个实体,实体间存在着1∶n的联系,根据规则1.1和规则1.2中的2可转换为如下关系模式(带下画线的属性为码):
仓库( 仓库号 ,地点,面积)
产品( 产品号 ,产品名,价格,仓库号,数量)
【例2-3】 将图2-12中含有同实体集1∶n联系的E-R图根据上述规则转换为关系模式。
图2-12 实体集内部1∶ n 联系转换为关系模式的实例
该例只有一个实体,实体集内部存在着1∶n的联系,根据规则1.1和规则1.2中的2可转换为如下关系模式(带下画线的属性为码):
职工( 职工号 ,姓名,年龄,领导工号)
其中,“领导工号”就是领导的“职工号”,由于同一关系中不能有相同的字段名,故将领导的“职工号”改为“领导工号”。
【例2-4】 将图2-13中含有m∶n联系的E-R图根据规则转换为关系模式。
该例包含两个实体,实体间存在着m∶n的联系,根据规则1.1和规则1.2中的3)可转换为如下关系模式(带下画线的属性为码):
商店( 店号 ,店名,店址,店经理)
商品( 商品号 ,商品名,单价,产地)
经营( 店号 , 商品号 ,月销售量)
【例2-5】 将图2-14中同实体集间含有m∶n联系的E-R图根据规则转换为关系模式。
图2-13 二元m∶n联系转换为关系模式实例
图2-14 同一实体集内m∶n联系为关系模式的实例
该例只有一个实体,实体集内部存在着m∶n的联系,根据规则1.1和规则1.2中的3)可转换为如下关系模式(带下画线的属性为码):
零件( 零件号 ,名称,价格)
组装( 组装件号 , 零件号 ,数量)
其中,“组装件号”为组装后的复杂零件号,由于同一个关系中不允许存在同字段名,因而改为“组装件号”。
【例2-6】 将图2-15中同实体集间含有m∶n联系的E-R图根据规则转换为关系模式。
该例包含3个实体,3个实体间存在着m∶n的联系,根据规则1.1和规则1.2中的4)可转换为如下关系模式(带下画线的属性为码):
供应商( 供应商号 ,供应商名,地址)
零件( 零件号 ,零件名,单价)
产品( 产品号 ,产品名,型号)
供应( 供应商号 , 零件号 , 产品号 ,数量)
图2-15 多实体集间联系转换为关系模式的实例