E-R模型转化为关系模型

发布于:2021-06-11 02:44:23

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

相关推荐

最新更新

猜你喜欢