这几年软考的数据库设计题型也基本确定,具体如下:
【问题1】(4~6分)
根据问题描述,补充联系、联系的类型,完善图2-1的实体联系图。
【问题2】(5~7分)
根据实体联系图,将关系模式中的空(a)~(*)补充完整。对某些关系模式,用下划线或找出各关系模式的主键和外键。
【问题3】(2~3分)
*问答题,一般针对题中某关系模式存在的问题或实体联系图有遗漏,让你来回答解决方案。大部分的问题是和前两题有关的。也和数据库的基础知识有关。
针对上面的题型,下面来回忆一下相关的知识。
1、实体联系图:(E-R图)
通过做2009年上半年到2012年下半年整整八套题,实体联系图部分没有得满分的时候,最差的情况是对一个,最好的情况也是错一个。具体的原因主要是:
①审题不认真,看错、疏漏。(主观问题是硬伤)
②理解、逻辑不通。
③三条线关系不敢画,一画就错。
基础知识:
实体关系图主要是画出实体和实体之间的关系。一般题中会罗列出所有的实体,然后让考生填写关系。
①两个实体之间的关系:
一对一关系:如:每个班级只有一个辅导员,每个辅导员只管理一个班级。
班级和辅导员是一对一关系
实体关系图就是
一对多关系:如:规定一本图书只能由一个出版社出版,一个出版社可以出版多本图书。
图书和出版社是一对多关系
实体关系图就是
多对多关系:如:一名作者可以创作多本书,一本书可以由多名作者共同创作。
作者和书是多对多关系
实体关系图就是
以上是两个实体的关系图的解释,一般题中会很明显的给出提示,所以两个实体的关系图一般都不会画错,这是数据库设计题里的必得题。难点是一下两种情况。
②同一实体集内部不同联系情况:
一对多联系:如在某单位,一个具体职工,他既可能是其它职工的领导者,又可能是被别的职工领导。职工内部出现联系,联系图如下:
多对多联系:如:一个零部件能组装多种其它零部件,反之该零部件也可以由其它零部件组装。
实体关系图如下
③两个以上实体集之间多对多多元联系情况:
如:假设在同一学期中,一名教师可以教多门课,一门课可以由多名教师教,一名学生可以选多名不同教师教的课,一名教师的课可以被多名不同的学生选修。
教师、课程、学生实体之间就存在多对多的多元关系,具体实体关系图如下:
2、实体关系转化成关系模式:
做了几套真题,几乎没套题都会出现关系模式题填写错误的问题,错误点如下:
(1)漏填:几乎都是不认真审题造成的,还有就是漏掉实体关系图中和该实体有关系的另一个实体的关键属性。
(2)多填:数据冗余的现象,比如说班级实体里:班级(班级编号、班级地址),而另一个关系模式中就会容易把班级编号和班级地址一起加进属性里,因为班级编号已经能决定班级地址了,所以就造成了数据冗余现象。
E-R转换成关系模式的注意点
①两个实体集间1:n联系
可以将“一方”实体集的主关键字纳入“n方”实体集中做外关键字,同时把联系的属性也一并归到“n方”对应的关系中。
②两个实体集间m:n联系
必须对“联系”单独建立一个关系模式,用来联系双方实体集。该关系模式中的属性至少要包括被它所联系的双方实体集的“主关键字”,并且如果联系有属性,也要归入这个关系模式中。
如:上面的作者和图书的实体关系图,可以转化成三个关系模式
作者(编号,姓名,职称)
图书(书号,书名,出版日期)
创作(编号,书号,合同时间,完成时间)
③两个实体集间的1:1关系
如果实体A与实体B是1:1的联系,其转换成关系模式的方法如下:
(1)把A实体集中主关键字加入到B实体集对应的关系模式中去,如果联系有属性也一起加入。
(2)把B实体集中主关键字加入到A实体集对应的关系模式中去,如果联系有属性也一起加入。
(3)建立第三个关系,关系中包含两个实体集的主关键字,如果联系有属性也一起加入。
④同一实体集内部的一对多联系的转换
可以再这个实体集对应的关系中多设一个属性,用来作为与该实体相联系的另一个实体的“主关键字”。如果联系有属性,也一起加入到关系模式中。
例如上面的职工实体集内部1:n的联系,可以转换成一下关系模式:
职工(工号,姓名,性别,出生日期,工作日期,职称,工资,领导者工号,民意测试)
⑤同一实体集内部的多对多联系的转换
需要为这个联系单独建立一个关系,该关系中至少应包含被它联系的双方实体的主关键字,如果联系有属性,也一起加入到关系模式中。
例如上面的零部件实体集内部m:n组装联系。
零部件(部件号,名称,价格)
组 装(部件号,组装件号,数量)
⑥多实体集之间多对多的多元联系的转换
必须为联系单独建立一个关系模式,该关系中至少应包含被它联系的各个实体集的主关键字,如果联系有属性,也要加到这个关系模式中去。
如上面教师,学生,课程实体之间的多元联系可以如下转化
教师(教师号,姓名,身份证号,性别,职称,出生日期,电话号码,备注,照片)
课程(课程编号,课程名称,学时,学分,备注)
学生(学号,姓名,身份证号,性别,出生日期,专业,年级,电话号码,备注,照片)
教_学_课(学号,教师号,课程编号,成绩)
根据上面的方法,相信再加上考生自己的认真,数据库题一定没有问题了。