前言
做了几套软考题之后发现下午题的题型很固定,第一题是数据流图,第二个是关系模式,第三个是用例图,第四个是算法,第五个是设计模式。既然题型这么固定,那么我们就好好的对每个知识点进行深入的研究,然后拿下它!
So ,今天我们来看一下E-R 图关系模式的转换。
建立数据库的时候我们首先要画E-R图,E-R图是由实体、属性和联系三要素组成的,每个实体之间会有联系,当我们转换成关系模式的时候,就会出现一对一、一对多和多对多的情况。那么对于实体和联系具体怎么进行转换呢,听我细细道来……
一、一对一
1、 将联系转换成一个独立的关系模式,关系模式的名称为联系的名称。关系模式的属性包括该联系所关联的两个实体的码及联系的属性,关系的码取自任一方实体的名称。
2、 将联系归并到关联的两个实体的任一方,给待归并的一方实体属性集中增加另一方实体的码和该联系的属性即可,归并后的实体码保持不变。
实例
一个公司有一个经理,一个经理也只能在一个公司进行任职,所以公司和经理之间是一对一的关系。公司(公司编号,公司名,地址,电话),经理(职工编号,姓名,性别,电话)。经理任职会产生任职日期属性。
转换为关系模式:
1、 公司(公司编号,公司名,地址,电话) 主键为公司编号
经理(职工编号,姓名,性别,电话) 主键为职工编号
任职(公司编号,职工编号,任职日期) 主键为公司编号或者是职工编号
2、 (1)公司(公司编号,公司名,地址,电话,职工编号,任职日期) 主键为公司编号,外键为职工编号
经理(职工编号,姓名,性别,电话) 主键为职工编号
(2)公司(公司编号,公司名,地址,电话) 主键为公司编号
经理(职工编号,姓名,性别,电话,公司编号,任职日期) 主键为职工编号,外键为公司编号。
二、一对多
1、 将联系转换成一个独立的关系模式,名称为联系的名称,关系模式的属性取该联系所关联的两个实体的码及联系的属性,关系的码是多方实体的码。
2、 将利息归并到关联的两个实体的多方,给待归并的多方实体属性集中增加一方实体的码和该联系的属性,归并后的多方实体码保持不变。
实例
一个部门中有多个员工,但是每个员工只能属于一个部门,所以部门和员工之间的关系就是一对多。部门(部门号,部门名称,电话),员工(员工号,姓名,电话)。
转换为关系模式:
1、 部门(部门号,部门名称,电话) 主键是部门号
员工(员工号,姓名,电话) 主键是员工号
隶属(部门号,员工号) 主键是部门号和员工号
2、 部门(部门号,部门名称,电话) 主键是部门号
员工(员工号,姓名,电话,部门号) 主键为员工号,外键为部门号
三、多对多
多对多的联系只能转换成一个独立的关系模式,关系模式的名称取联系的名称,关系模式的属性取该联系所关联的两个多方实体的码及联系的属性,关系的码是多方实体的码构成的属性组。
实例
在选课系统中,一个学生可以选修多门课程,一个课程也可以被多个学生选,每门课程最后都要有成绩,所以学生和课程之间是多对多的关系。
学生(学号,姓名,性别),课程(课程号,课程名称,授课老师)。
转换成关系模式:
学生(学号,姓名,性别) 主键为学号
课程(课程号,课程名称,授课老师) 主键为课程
选课(学号,课程号,成绩) 主键为学号和课程号的组合,外键为课程号,学号
实践
答案:
分析:
1、想必有好多人在第一题中没有将采购那个联系合并吧。
通过“一个采购订单可以包含多类服装。采购订单上主要由……和对应的供应商”这句话,大家很容易把采购订单与服装的联系和采购订单和供应商的联系画出来,但是我们仔细想想,采购订单上应该把每类服装或者是不同数量的同类的服装对应的供应商表现出来,意思就是在采购订单上,服装和供应商之间也是有联系的。所以我们将这两个联系合并成一个,表示三者之间都互相有联系,并不是只有采购订单和服装,采购订单和供应商有联系。
2、因为仓库和库管员之间的关系是一对多。所以在填仓库信息这个关系模式时,应该将库管员编码写进去。
供应情况表示的是供应商和服装之间的联系。因为供应商和服装之间是多对多的关系,所以供应情况中应该包括供应商的码和服装的码。所以将供应商编码和服装编码填进去。
采购订单是一个实体,需要有的属性根据说明中可知为订单编码,订货日期和应到货日期。
采购订单明细为采购订单、服装和供应商之间的联系,因为三者是多对多的关系,所以采购订单明细中应包括三者的码。再加上说明中的属性,所以应为订单编码,服装编码,供应商编码,数量和采购价格。
3、因为题中要求为库管员定期轮流对所有仓库进行抽查,所以库管员和仓库之间的关系应为多对多。
总结
每次遇到不会的知识都会有一种得过且过的感觉,总觉得是会,就是没有掌握好而已,然后说自己没有时间总结。这其实就是我们常说的,总是低头走路,却不抬头看路。其实总结如果花费一个小时的时间比做题花费的两个小时的时间更加珍贵,更有收获!每次总结后都深深的体会到总结的好处……相信小伙伴也早就有感触了吧,那就赶紧行动吧!最后提醒大家,不要顺手就用* 或者是n表示对比关系,首先看一下题目要求,如果没有要求,那就看一下给的实体联系图中有没有标出来,如果人家给的*或n,跟人家保持一致,如果都没有的话,那就可以按照自己习惯了……相信这个题,大家看完我的博客之后就应该会了吧!加油!!!