2015 上半年数据库系统工程师考试真题及答案-下午卷
试题一
【说明】
某大学为进一步推进无纸化考试,欲开发一考试系统。系统管理员能够创建包括专业方
向、课程编号、任课教师等相关考试基础信息,教师和学生进行考试相关的工作。系统与考
试有关的主要功能如下。
(1)考试设置。教师制定试题(题目和答案),制定考试说明、考试时间和提醒时间等
考试信息,录入参加考试的学生信息,并分别进行存储。
(2)显示并接收解答。根据教师设定的考试信息,在考试有效时间内向学生显示考试
说明和题目,根据设定的考试提醒时间进行提醒,并接收学生的解答。
(3)处理解答。根据答案对接收到的解答数据进行处理,然后将解答结果进行存储。
(4)生成成绩报告。根据解答结果生成学生个人成绩报告,供学生查看。
(5)生成成绩单。对解答结果进行核算后生成课程成绩单供教师查看。
(6)发送通知。根据成绩报告数据,创建通知数据并将通知发送给学生;根据成绩单
数据,创建通知数据并将通知发送给教师。
现采用结构化方法对考试系统进行分析与设计,获得如图 1-1 所示的上下文数据流图和图
1-2 所示的 0 层数据流图。
【问题 1】
使用说明中的词语.给出图 1-1 中的实体 E1—E2 的名称。
E1:教师
E2:学生
本题考查采用结构化方法进行系统分析与设计,主要考查数据流图(DFD)的应用,是比较传
统的题目,与往年相比考点类似,要求考生细心分析题目中所描述的内容。
DFD 是一种便于用户理解、分析系统数据流程的图形化建模工具。是系统逻辑模型的重要组
成部分。上下文 DFD(顶层 DFD)通常用来确定系统边界,将待开发系统本身看作一个大的加
工(处理),然后根据谁为系统提供数据流,谁使用系统提供的数据流,确定外部实体。建模
出的上下文 DFD 中只有唯一的一个加工和一些外部实体,以及这两者之间的输入输出数据
流。在上下文确定的系统外部实体以及与外部实体的输入输出数据流的基础上,建模 0 层
DFD,将上下文 DFD 中的加工进一步分解,成多个加工,识别这些加工的输入输出数据流,使
得所有上下文 DFD 中的输入数据流,经过这些加工之后变换成上下文 DFD 的输出数据流。根
据 0 层 DFD 的中加工的复杂程度进一步建模加工的内容。
在建模分层 DFD 时,根据需求情况可以将数据存储在建模在不同层次的 DFD 中,注意要在绘
制下层数据流图时要保持父图与子图平衡。父图中某加工的输入输出数据流必须与它的子图
的输入输出数据流在数量和名字上相同,或者父图中的一个输入(或输出)数据流对应于子图
中几个输入(或输出)数据流,而子图中组成这些数据流的数据项全体正好是父图中的这一个
数据流。
本问题考查上下文 DFD,要求确定外部实体。考察系统的主要功能,不难发现,针对系统与
考试有关的主要功能,涉及到教师和学生,系统管理员不在与考试有关的主要功能中涉及,
另外没有提到其他与系统交互的外部实体。根据描述(1)中“教师制定试题等考试信息”等
信息,描述(2)中“根据教师设定的考拭信息,在考试有效时间内向学生显示考试说明和题
目”,从而即可确定 E1 为“教师”实体,E2 为“学生”实体。
【问题 2】
使用说明中的词语,给出图 1-2 中的数据存储 D1—D4 的名称。
D1:试题(表)或题目和答案(表) D2:学生信息(表) D3:考试信息(表) D4:解答结果(表)
本问题要求确定 0 层数据流图中的数据存储。分析说明中和数据存储有关的描述,说明中(1)
中“教师制定试题(题目和答案),制定考试说明、考试时间和提醒时间等考试信息,录入参
加考试的学生信息,并分别进行存储”,可知 D1、D2 和 D3 为试题、学生信息和考试信息,
再从图 1-2 中流入 D2 的数据流名称“学生信息数据”,确定 D2 是学生信息,流入 D1 的数据
流名称为“试题”,确定 D1 为试题,流入 D3 的数据流名称为考试信息,确定 D3 为考试信息。
说明中(3)根据答案对接收到的解答数据进行处理,然后将解答结果进行存储,确定 D4 是解
答结果。其他描述中对数据存储的使用更进多说明,进一步确定 D1〜D4 满足上述分析。
【问题 3】
根据说明和图中词语,补充图 1-2 中缺失的数据流及其起点和终点。
本问题要求补充缺失的数据流及其起点和终点。通过不同层的 DFD 以及说明中描述和图之间
的对应关系加以确定。首先对照图 1-1 和图 1-2 的输入、输出数据流,发现数据流的数量和
名称均相同,所以,需进一步考查说明中的功能描述和图 1-1 中的数据流的对应关系,以确
定缺失的是加工之间还是加工与数据存储之间的数据流。
说明(2)显示并接收解答,需要“根据教师设定的考试信息,在考试有效时间内向学生显示
考试说明和题目”,对照图 1-2 可以看出,加工 2 缺少所要显示的题目的输入源,即缺失输
入流“题目”,题目存储于数据存储试题中,因此,缺少的数据流为从题目(D1)到加工 2 显
示并接收解答的题目。说明(3)处理解答,需要“根据答案对接收到的解答数据进行处理”,
对照图 1-2 可以看出,加工 3“处理解答”缺少输入流“答案”,而答案从说明(1)中可以看
出是存储在试题(题目和答案)数据存储中(D1),因此确定缺失的一条数据流“答案”,从 D1
或试题到加工 3 或处理解答。
【问题 4】
图 1-2 所示的数据流图中,功能(6)发送通知包含创建通知并发送给学生或老师。请
分解图 1-2 中加工(6),将分解出的加工和数据流填入答题纸的对应栏内。(注:数据流的
起点和终点须使用加工的名称描述)
本问题针对建模分层 DFD 的时候的分解粒度。考查说明(6)发送通知中,“根据成绩报告数据,
创建通知数据并将通知发送给学生;根据成绩单数据,创建通知数据并将通知发送给教师。”
说明功能(6)发送通知包含创建通知并发送给学生或老师。在图 1-2 中建模为一个加工,完
成的功能是依据不同的输入数据流创建通知,然后发送给相应的外部实体老师或学生,因此
为了进一步清晰每个加工的职责,需对图 1-2 中原有加工 6 进行分解,分解为“创建通知”
和“发送通知”。创建通知针对输入数据流“报告数据”和“成绩单数据”,这两条数据流保
持原有的起点,终点即为创建通知。创建通知产生出“通知数据”。“通知数据”作为加工“发
送通知”的输入流,进一步根据通知数据是针对哪个外部实体而发送“通知”给相应的学生
或者教师。至此,对图 1-2 中原有加工 6 的分解完成。
试题二
【说明】
某大型集团公司的数据库的部分关系模式如下:
员工表:EMP(Eno,Ename,Age,Sex, Title),各属性分别表示员工工号、姓名、年龄、
性别和职称级别,其中性别取值为“男”“女”;
公司表:COMPANY(Cno,Cname,City),各属性分别表示公司编号、名称和所在城市;
工作表:WORKS(Eno.Cno,Salary),,各属性分别表示职工工号、工作的公司编号和工资。
有关关系模式的属性及相关说明如下:
(1)允许一个员工在多家公司工作,使用身份证号作为工号值。
(2)工资不能低于 1500 元。
【问题 1】
请将下面创建工作关系的 SQL 语句的空缺部分补充完整,要求指定关系的主码、外码,
以及工资不能低于 1500 元的约束。
(a) REFERENCES EMP(Eno)
(b) REFERENCES COMPANY(Cno)
(c) CHECK(Salary>=1500)
(d) (Eno,Cno)
本题考查 SQL 语句的应用。
此类题目要求考生掌握 SQL 语句的基本语法和结构,认真阅读题目给出的关系模式,针对题
目的要求具体分析并解答。本试题已经给出了 3 个关系模式,需要分析每个实体的属性特征
及实体之间的联系,补充完整 SQL 语句。
由题目说明可知,Eno 和 Cno 两个属性组合是 WORKS 关系表的主键,所以在 PRIMARYKEY 后
填的应该是(Eno,Cno)组合;Eno 和 Cno 分别作为外键引用到 EMP 和 COMPANY 关系表的主键,
因此需要用 REFERENCES 对这两个属性进行外键约束;由“工资不能低于 1500 元”的要求,
可知需要限制账户余额属性值的范围,通过 CHECK 约束来实现。从上述分析可知,完整的
SQL 语句如下:
【问题 2】
(1)创建女员工信息的视图 FemaleEMP.属性有 Eno、Ename、Cno、Cname 和 Salary,
请将下面 SQL 语句的空缺部分补充完整。
(2)员工的工资由职称级别的修改自动调整,需要用触发器来实现员工工资的自动维
护,函数 float Salary_value(char(10) Eno)依据员工号计算员工新的工资。请将下面 SQL
语句的空缺部分补充完整。
(1) (e) VIEWFemaleEMP(Eno,Ename,Cno,Cname,Salary)
(f) EMP.Eno=WORKS.EnoANDCOMPANY.Cno=WORKS.CnoANDSex='女,
(2) (g) TRIGGER
(h) UPDATE
(i) Salary=Salary—value(nrow.Eno)
(j) WORKS.Eno=nrow.Eno
(1) 创 建 视 图 需 要 通 过 CREATEVIEW 语 句 来 实 现 , 由 题 目 可 知 视 图 的 属 性 有
(Eno,Ename,Cno,Cname,Salary);通过公共属性列 Eno 和 Cno 对使用的三个基本表进行连接;
由于只创建女员工的试图,所以还要在 WHERE 后加入“Sex='女’”的条件。从上分析可见,
完整的 SQL 语句如下:
(2) 创建触发器可通过 CREATETRIGGER 语句实现,要求考生掌握触发器的基本语法结构。按
照问题要求,在工资关系中更新职工职称级别时触发器应自动执行,故需要创建基于 UPDATE
类型的触发器,其触发条件是更新职工职称级别;最后添加表连接条件。完整的触发器实现
的方案如下:
【问题 3】
请将下面 SQL 语句的空缺部分补充完整。
(1)查询员工最多的公司编号和公司名称。
(2)查询所有不在“中国银行北京分行”工作的员工工号和姓名。