E-R图转换成关系模式

来源:互联网 发布:js块作用域 编辑:程序博客网 时间:2024/06/08 02:33
        将E-R图转换成关系模式在之前学习数据库的时候就学过了,而且在机房管理项目中也有亲自实践,在软考的学习中,学习到的将E-R图转换成关系模式的方法有得到了补充,所以就又得总结一下。
【一对一】
        对于一对一联系的转换有三种形式:通常我们熟知的两种是:将联系归并到关联的两个实体的任意一方,给待归并的一方实体属性集中增加另一方实体的码和该联系的属性,归并后的实体码不变。
        另一种方式是将联系转换成单独的关系模式,关系模式的名称取自联系的名称,关系模式的属性包括该联系所关联的两个实体的码及联系的属性,该关系模式的码取自任意一方的实体的码。
实例:
        一个学校有一个校长进行管理,一个校长只在一个学校任职,则学校和校长之间的关系为一对一。学校的信息有:学校编号,校名,地址,电话;校长的信息有;校长的职工编号,校长姓名,性别,电话。校长任职会产生任职日期的属性。
              
转换为关系模式:
(一)学校(学校编号,校名,地址,职工编号,任职日期)主键为学校编号,外键为职工编号
           校长(职工编号,校长姓名,性别,电话)主键为职工编号
(二)学校(学校编号,校名,地址)主键为学校编号
           校长(职工编号,校长姓名,性别,电话,学校编号,任职日期)主键为职工编号,外键为学校编号
(三)学校(学校编号,校名,地址)主键为学校编号
           校长(职工编号,校长姓名,性别,电话)主键为职工编号
           任职(学校编号,职工编号,任职日期)主键为学校编号或职工编号(之前的错误:学校编号和职工编号的联合主键),外键为学校编号,职工编号
【一对多】
        而对于一对多的转换就有两种形式:一种是经常在用的:将联系的属性归并到关联的两个实体的多方,待归并的一方实体属性集中增加另一方实体的码和该联系的属性,归并后的实体码不变。
        另一种方式是将联系转换成单独的关系模式,关系模式的名称取自联系的名称,关系模式的属性包括该联系所关联的两个实体的码及联系的属性,该关系模式的码取自多方的实体的码。
实例:
        一个部门中可以有多个员工,而每个员工仅属于一个部门,则部门与员工就可以表示为一对多。
               
转换为关系模式:
(一)部门(部门号,部门名称,电话)主键为部门号
           员工(员工号,姓名,电话,工资,部门号)主键为员工号,外键为部门号。
(二)部门(部门号,部门名称,电话)主键为部门号
           员工(员工号,姓名,电话,工资)主键为员工号
           隶属(员工号,部门号)主键为员工号,外键为员工号、部门号
【多对多】
        至于多对多的转换就只有一种形式了,即将联系转换成单独的关系模式,关系模式的名称取自联系的名称,关系模式的属性包括该联系所关联的两个实体的码及联系的属性,该关系模式的码取自多方的实体的码构成的属性组。
实例:
        在选课系统中,一个学生可以选多门课程,一个课程也有多名学生上课,学生选择的每门课程都有相应的成绩,课程和学生之间的关系就是多对多的关系。
                
转换为关系模式:
课程(课程号,课程名称,授课教师)主键为课程号
学生(学号,姓名,性别)主键为学号
选课(课程号,学号,成绩)主键为课程号和学号组成的联合主键,外键为课程号,学号。
【总结】
        在将E-R图转换成关系模式的方法中,这次学习了新的表现形式,但是之前的实践中,也总会感觉之前的转换方式有些不足,根据自己的理解,所得到的关系模式,其实和新学习的这种方法有着相同之处,所以实践中出真知。
0 0
原创粉丝点击