ER图(把ER模型转换为关系模式、关系范式概念)

关于ER模型的转换,我们只需要记住三个转换准则:
1:1、1:N、M:N

二元联系:

(1)一对一关系(One to One)

映射规则一:当转换为关系模型时,在两个实体任选一个添加另一个实体的主键即可。

例子:
校里一个班级只有一个正班长,而一个班长只在一个班中任职,则班级与班长之间具有一对一联系。当转换为关系模式时,我们可以在班长关系中添加班级的主键(班级号);或者在班级关系中添加班长的主键(学号)。


(2)多对一关系(Many to one)

映射规则:保留多边(Many-side)E1的所有属性 + 一边(one-side)的主键 + 关系自身的属性到一个扩展(extended)的E1表中。
即当转换为关系模型时,在N端添加另一端的主键和联系的属性。

为什么这么映射?
可以减少数据库的冗余,因为如果是把STUDENT的主键添加到STAFF表中,由于一个STAFF可以对应多个学生,这样子就会出现很多冗余的数据。


一个班级中有若干名学生,而每个学生只在一个班级中学习,则班级与学生之间具有一对多联系。
当转换为关系模式时,我们得在学生关系中添加班级的主键(班级号)。


(3)多对多关系(Many to Many)

映射规则:取关系两端的实体的主键 + 关系本身的属性
当转换为关系模型时,需要将联系转换为实体,然后在该实体上加上另外两个实体的主键,作为联系实体的主键,然后再加上该联系自身带的属性即可。
如图(c)情况,当我们转换成关系模式时,我们要把“联系名”转换为实体模式,添加另外两个实体的主键,这两个主键合起来为“联系名”的主键,然后添加该联系自带的属性即可。

习题:

  • 90
    点赞
  • 678
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 7
    评论
ER图转换关系模型的步骤如下: 1.将ER图中的实体转换关系模型中的表,每个实体对应一个表,表的名称为实体的名称,表的属性为实体的属性。 2.将ER图中的关系转换关系模型中的表,每个关系对应一个表,表的名称为关系的名称,表的属性为关系的属性。 3.将ER图中的多对一关系转换关系模型中的外键,将多的一方的主键作为外键添加到一的一方的表中。 4.将ER图中的多对多关系转换关系模型中的中间表,中间表包含两个外键,分别指向多的两个表。 下面是一个示例: 假设有一个ER图,包含两个实体:学生和课程,以及一个关系:选课。其中,学生实体包含属性:学号、姓名、性别;课程实体包含属性:课程号、课程名称、学分;选课关系包含属性:成绩。 将ER图转换关系模型的步骤如下: 1.将学生实体转换关系模型中的表,表的名称为“学生”,表的属性为“学号”、“姓名”、“性别”。 2.将课程实体转换关系模型中的表,表的名称为“课程”,表的属性为“课程号”、“课程名称”、“学分”。 3.将选课关系转换关系模型中的表,表的名称为“选课”,表的属性为“成绩”。 4.将学生和选课之间的关系转换关系模型中的外键,将学生表中的“学号”作为外键添加到选课表中。 5.将课程和选课之间的关系转换关系模型中的外键,将课程表中的“课程号”作为外键添加到选课表中。 最终的关系模型如下: 学生表(Student): | 学号 | 姓名 | 性别 | | ---- | ---- | ---- | | | | | 课程表(Course): | 课程号 | 课程名称 | 学分 | | ------ | -------- | ---- | | | | | 选课表(SC): | 学号 | 课程号 | 成绩 | | ---- | ------ | ---- | | | | |

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

编程图一乐

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值