在进行数据库设计时,我们在进行概念设计后,可以得出E-R图。
在接下来的逻辑设计中,我们需要把设计好的E-R图转换为数据库的关系模式。不同类别(1:1,1:m,n:m)的联系有不同的转换方法,以下使用下图为例子介绍这些方法。
一对一联系的转换:
第一种:将联系转换成一个独立的关系模式,关系模式的名称取联系的名称,关系模式的属性包括该联系所关联的两个实体的码及联系的属性,关系的码取自任意一方实体的码。
如上图书本与课程有着1:1关系,转换后联系的关系模式为(主码红色标注):
—————————————————————————————————————————
选择(书本号
,课程号,选书人名字)
或
选择(课程号
,书本号,选书人名字)
—————————————————————————————————————————
第二种:将联系归并到关联的两个实体的任意一方,给待归并的一方实体属性集中增加另一方实体的码和该联系的属性即可,归并后的实体码保持不变。
如上图书本与课程有着1:1关系,转换后只需修改书本或课程关系模式为(主码红色标注):
—————————————————————————————————————————
书本(书本号
,书本名,页数,课程号,选书人名字)
或
课程(课程号
,课程名,学分,书本号,选书人名字)
—————————————————————————————————————————
一对多联系的转换:
第一种:将联系转换成一个独立的关系模式,关系模式的名称取联系的名称,关系模式的属性取该联系所关联的两个实体的码及联系的属性,关系的码是多方实体的码。
如上图教师与课程有着1:*关系,转换后联系的关系模式为(主码红色标注):
—————————————————————————————————————————
任课(课程号
,教师号,时间)
—————————————————————————————————————————
第二种:将联系归并到关联的两个实体的多方,给待归并的多方实体属性集中增加一方实体的码和该联系的属性即可,归并后的多方实体码保持不变。
如上图教师与课程有着1:*关系,转换后只需修改课程(多方)关系模式为(主码红色标注):
—————————————————————————————————————————
课程(课程号
,课程名,学分,教师号,时间)
—————————————————————————————————————————
多对多联系的转换:
只有一种:关系模式的名称取联系的名称,关系模式的属性取该联系所关联的两个多方实体的码及联系的属性,关系的码是多方实体的码构成的属性组。
如上图学生与课程有着*:*关系,转换后联系的关系模式为(主码红色标注):
—————————————————————————————————————————
选修(学号
,课程号
,成绩)
—————————————————————————————————————————
总结:在转换时,如果把联系转换成一个独立的关系模式,则
- 一对一选择任意一方实体的码作为联系的主码
- 一对多选择多方实体的码作为联系的主码
- 多对多选择两方实体的码作为联系的主码
除此之外,一对一可以将联系归并到实体的任意一方、一对多可以将联系归并到实体的多方,多对多只能转换成一个独立的关系模式。