E-R模型转化为关系模型
E-R模型转化为关系模型
*讲解部分
涉及到的概念简单提一下,具体查书,可跳过
- 实体:客观存在并可相互区别的事物。一个学生,一个部门…
- 实体型(矩形)具有相同属性的实体必然具有共同的特征和性值。用实体名及其属性名集合来抽象和刻画同类实体,就成为实体型。简单理解一下可能不一定准确哈,我们都学过类和对象,类中刻画了公有的属性,这里类的概念和实体型蛮相似的。 学生(学号,姓名,性别)是一个实体型,可以理解为,学号姓名性别刻画了学生,学生是类,具体到小明小红是实体。
- 属性(椭圆形)实体。实体具有的某一特性成为属性。上述学号、姓名能够刻画实体性的东西
- 联系方法(菱形):具体分为实体内部的联系和实体之间的联系。实体内部的联系通常是指组成实体的各个属性之间的联系,实体之间的联系通常指的是不同实体集之间的联系。简单提一下实体之间的联系,举个例子,学生和课程为两个实体集,学生选课即为实体集之间的联系。
1.一对一的情况
有两种方法可以解决这个问题。
第一种方法,由各实体的主码构成关系模式,关系模式的主码可以是任意一个尸体集的主码,实体中属性照抄不变即可。
第二种方法:实体中的属性照常写,然后将一边实体集的主码加到另一个实体集对应的关系模式中。
简单记:两头照抄,主码不变,一边主码加到另一边(对应第二种方法,图中的结果2)
2.一对多的情况
同样是两种方法。
第一种方法:同一对一类似,只不过这个时候我们不能随便确定关系模式的主码了,而必须确定n端实体集的主码为关系模式的主码。
第二种方法:同一对一类似,不同点是,必须将1端实体集的主码加入n端的关系模式中,且n端的主码仍然为该关系模式的主码。
简单记:两头照抄,主码不变,1端主码加到n端
3.多对多的情况
这个就没有两种方法了,直接简单记吧~
简单记:两头照抄,主码不变,两端主码去新的实体集做主码,新的实体集属性照抄
*例题部分
直接贴原题了
某企业集团有若干工厂,每个工厂生产多种产品,且每一种产品可以在多个工厂生产,每个工厂按照固定的计划数量生产产品;每个工厂聘用多名职工,且每名职工只能在一个工厂工作,工厂聘用职工有聘期和工资。工厂的属性有工厂编号、厂名、地址,产品的属性有产品编号、产品名、规格,职工的属性有职工号、姓名。
(1)根据上述语义画出E-R图;(5分)
(2)将该E-R模型转换为关系模型;(5分)
(要求:1:1和1:n的联系进行合并)
(3)指出转换结果中每个关系模式的主码和外码。(5分)
(1)
第一问要求根据语义画出E-R图,这里简单提一下吧。
基本思路是从题目中提取中 实体型 属性 联系(以及联系的属性),那么我们分别来抓关键句。
首先是实体型。
工厂的属性有工厂编号、厂名、地址,产品的属性有产品编号、产品名、规格,职工的属性有职工号、姓名。
之后是属性
emmm,上面大白话已经告诉我们了哈,这里省略
再有是联系
多对多和一对多:
- 每个工厂生产多种产品,且每一种产品可以在多个工厂生产
- 每个工厂聘用多名职工,且每名职工只能在一个工厂工作
最后是联系的属性
- 每个工厂按照固定的计划数量生产产品
- 工厂聘用职工有聘期和工资
(2)
题目要求:1:1和1:n的联系进行合并
首先把工厂,产品,职工照抄下来总是没错的。这一步我们得到:
工厂(工厂编号,厂名,地址)
产品(产品编号,产品名,规格)
职工(职工号,姓名)
之后,对工厂和生产多对多关系进行处理。这一步我们得。还记得嘛,两边照抄,新增实体集,两边主码共同作为主码,关系属性(计划数量)填上去
工厂(工厂编号,厂名,地址)
产品(产品编号,产品名,规格)
职工(职工号,姓名)
生产(工厂编号,产品编号,计划数量)
最后,对职工和工厂一对多关系进行处理。两头照抄,主码不变,1端主码(工厂编号)加到n端,联系属性照抄。这一步我们得到:
工厂(工厂编号,厂名,地址)
产品(产品编号,产品名,规格)
职工(职工号,姓名,工厂编号,聘期,工资)
生产(工厂编号,产品编号,计划数量)
(3)
上面分析得很详细了哈,
工厂:主码是工厂编号
产品:主码是产品编号
职工:主码职工号
生产:主码是(工厂编号,产品编号)
外码就是那些新加进来的(外面的主码)嘛。。。,对应看一下就明白咯!
end
2019.6.3