数据库实体联系如何转换为关系模式

您所在的位置:网站首页 关系模型的规则 数据库实体联系如何转换为关系模式

数据库实体联系如何转换为关系模式

2023-08-29 23:50| 来源: 网络整理| 查看: 265

申明:本博主所有文章均属自用,不做任何商用。觉得写得好免费赠送,觉得不好请出门右转,拒绝任何恶意评论。

参考《试题》P32试题5

一、什么是实体、什么是联系

实体:供应商、项目、零件、员工

联系:供应

二、实体联系→关系模式 1:1联系

在两个实体任选一个添加另一个实体的主键;

每个实体的码均是该联系的候选键;

1:n联系

1:N 遇到 1:N 关系的话在N端添加另一端的主键,假如有学生和班级两个实体,一个班级可以容纳多个学生,但是一个学生只能选择一个班级, 因此班级和学生是1:N的关系,现在要转换为关系模型, 我们只需在学生的这端加上班级的唯一标识即可,这样做的原因是,因为一个学生只能有一个班级,班级是相对学生唯一的。

该联系的码为n端实体的码,关系的外键是1端的码;

n:m联系

需要将联系转换为实体,然后在该实体上加上另外两个实体的主键,作为联系实体的主键,然后再加上该联系自身带的属性即可。例如有学生和老师两个实体, 一个学生可以由多名老师来授课,一名老师也可以授课多名学生,它们是M:N关系的,假如联系为授课,该联系上有成绩属性,因此当我们把它转换为关系模型时,我们把联系转换为联系实体,并添加学生实体的主键(学号)和教师实体的主键(教师编号)作为自己的主键,值得注意的是,授课实体的外键分别是学号和教师编号,但是它的主键是(学号,教师编号),另外它还拥有自己的一个属性成绩。

1:1:N

这是三元联系的对应关系,但是当转换为关系模型时,和1:N的情况是差不多的。我们只需将N端添加另外两端的主键即可。

M:N:P

这种三元联系的三种多对应关系,看上去很复杂,其实转换起来并不是那么复杂了,我们要做的仅仅是将其中的联系转换为联系实体,然后在联系实体上添加M端N端P端的主键,然后加上联系实体自身的属性,就行了。

三、例子

说了这么多看个小例子。

这是一份关于商店商品仓库的ER图。

先看仓库和商品之间是M:N的关系,于是我们首先想到的应该是把联系 库存转换为库存实体。  库存 (仓库号,商品号,日期,库存量)  然后是商品实体和仓库实体  商品(商品号,商品名,单价)  仓库(仓库号,仓库名,地址)

除此之外仓库和商品还有一个供应关系,同样是M:N关系:  供应 (仓库号,商品号 ,月份,月供应量)

在上图的商店和仓库之间的关系可能写漏了,但是它们应该也是M:N的关系,一个商店可以被多个仓库供应,一个仓库也可以供应多个商店。上面已经创建了供应实体,现在只需在供应实体中假如商店号即可,也就是商店实体的主键。

供应(仓库号,商品号,商店号 ,月份,月供应量)  商店(商店号,商店名,地址)

总结 至此,转换关系模型也完成了,当然这只是个例子,实际的开发中,我们可能会遇到各式各样奇怪的需求,这就更要求我们做好概念设计的环节,对后来的数据库设计和维护都有好处。ER图的好坏,始终是数据库设计的重要一节。

================================================================================================

另一篇文章

================================================================================================

前言        做了几套软考题之后发现下午题的题型很固定,第一题是数据流图,第二个是关系模式,第三个是用例图,第四个是算法,第五个是设计模式。既然题型这么固定,那么我们就好好的对每个知识点进行深入的研究,然后拿下它!

       So ,今天我们来看一下E-R 图关系模式的转换。

       建立数据库的时候我们首先要画E-R图,E-R图是由实体、属性和联系三要素组成的,每个实体之间会有联系,当我们转换成关系模式的时候,就会出现一对一、一对多和多对多的情况。那么对于实体和联系具体怎么进行转换呢,听我细细道来……

  一、一对一

        1、  将联系转换成一个独立的关系模式,关系模式的名称为联系的名称。关系模式的属性包括该联系所关联的两个实体的码及联系的属性,关系的码取自任一方实体的名称。

       2、  将联系归并到关联的两个实体的任一方,给待归并的一方实体属性集中增加另一方实体的码和该联系的属性即可,归并后的实体码保持不变。

  实例

       一个公司有一个经理,一个经理也只能在一个公司进行任职,所以公司和经理之间是一对一的关系。公司(公司编号,公司名,地址,电话),经理(职工编号,姓名,性别,电话)。经理任职会产生任职日期属性。

 转换为关系模式:

       1、  公司(公司编号,公司名,地址,电话)              主键为公司编号

               经理(职工编号,姓名,性别,电话)                 主键为职工编号

               任职(公司编号,职工编号,任职日期)             主键为公司编号或者是职工编号

      2、  (1)公司(公司编号,公司名,地址,电话,职工编号,任职日期) 主键为公司编号,外键为职工编号

                       经理(职工编号,姓名,性别,电话)    主键为职工编号

              (2)公司(公司编号,公司名,地址,电话)   主键为公司编号

                       经理(职工编号,姓名,性别,电话,公司编号,任职日期)    主键为职工编号,外键为公司编号。

二、一对多

         1、  将联系转换成一个独立的关系模式,名称为联系的名称,关系模式的属性取该联系所关联的两个实体的码及联系的属性,关系的码是多方实体的码。

         2、  将利息归并到关联的两个实体的多方,给待归并的多方实体属性集中增加一方实体的码和该联系的属性,归并后的多方实体码保持不变。

      实例

        一个部门中有多个员工,但是每个员工只能属于一个部门,所以部门和员工之间的关系就是一对多。部门(部门号,部门名称,电话),员工(员工号,姓名,电话)。

    

                    

        转换为关系模式:

      1、  部门(部门号,部门名称,电话)   主键是部门号

             员工(员工号,姓名,电话)        主键是员工号              隶属(部门号,员工号)            主键是部门号和员工号

      2、  部门(部门号,部门名称,电话)    主键是部门号

             员工(员工号,姓名,电话,部门号) 主键为员工号,外键为部门号

三、多对多

           多对多的联系只能转换成一个独立的关系模式,关系模式的名称取联系的名称,关系模式的属性取该联系所关联的两个多方实体的码及联系的属性,关系的码是多方实体的码构成的属性组。

 实例

      在选课系统中,一个学生可以选修多门课程,一个课程也可以被多个学生选,每门课程最后都要有成绩,所以学生和课程之间是多对多的关系。

学生(学号,姓名,性别),课程(课程号,课程名称,授课老师)。

       转换成关系模式: 

       学生(学号,姓名,性别)                主键为学号

       课程(课程号,课程名称,授课老师)      主键为课程

       选课(学号,课程号,成绩)              主键为学号和课程号的组合,外键为课程号,学号 

       实践        知道了以上的理论知识,我们还要进行实践工作。下面来分析一道真题:

答案:

分析:

 1、想必有好多人在第一题中没有将采购那个联系合并吧。

       通过“一个采购订单可以包含多类服装。采购订单上主要由……和对应的供应商”这句话,大家很容易把采购订单与服装的联系和采购订单和供应商的联系画出来,但是我们仔细想想,采购订单上应该把每类服装或者是不同数量的同类的服装对应的供应商表现出来,意思就是在采购订单上,服装和供应商之间也是有联系的。所以我们将这两个联系合并成一个,表示三者之间都互相有联系,并不是只有采购订单和服装,采购订单和供应商有联系。

2、因为仓库和库管员之间的关系是一对多。所以在填仓库信息这个关系模式时,应该将库管员编码写进去。

      供应情况表示的是供应商和服装之间的联系。因为供应商和服装之间是多对多的关系,所以供应情况中应该包括供应商的码和服装的码。所以将供应商编码和服装编码填进去。

      采购订单是一个实体,需要有的属性根据说明中可知为订单编码,订货日期和应到货日期。

      采购订单明细为采购订单、服装和供应商之间的联系,因为三者是多对多的关系,所以采购订单明细中应包括三者的码。再加上说明中的属性,所以应为订单编码,服装编码,供应商编码,数量和采购价格。

3、因为题中要求为库管员定期轮流对所有仓库进行抽查,所以库管员和仓库之间的关系应为多对多。

总结

       每次遇到不会的知识都会有一种得过且过的感觉,总觉得是会,就是没有掌握好而已,然后说自己没有时间总结。这其实就是我们常说的,总是低头走路,却不抬头看路。其实总结如果花费一个小时的时间比做题花费的两个小时的时间更加珍贵,更有收获!每次总结后都深深的体会到总结的好处……相信小伙伴也早就有感触了吧,那就赶紧行动吧!最后提醒大家,不要顺手就用* 或者是n表示对比关系,首先看一下题目要求,如果没有要求,那就看一下给的实体联系图中有没有标出来,如果人家给的*或n,跟人家保持一致,如果都没有的话,那就可以按照自己习惯了……相信这个题,大家看完我的博客之后就应该会了吧!加油!!!  



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3