【解析】原加工 “发送通知” 包含创建通知和发送两个步骤,需拆分为两个加工。创建通知需要接收生成成绩报告的 “报告数据” 和生成成绩单的 “成绩单数据”,生成 “通知数据” 后传递给发送通知加工。【第 2 题】(题型:SQL 编程题)题目:某大型集团公司的数据库的部分关系模式如下:员工表:EMP(Eno,Ename,Age,Sex, Title),各属性分别表示员工工号、姓名、年龄、性别和职称级别,其中性别取值为 “男”“女”;公司表:COMPANY(Cno,Cname,City),各属性分别表示公司编号、名称和所在城市;工作表:WORKS(Eno,Cno,Salary),各属性分别表示职工工号、工作的公司编号和工资。有关关系模式的属性及相关说明如下:(1)允许一个员工在多家公司工作,使用身份证号作为工号值。(2)工资不能低于 1500 元。【问题 1】(4 分)请将下面创建工作关系的 SQL 语句的空缺部分补充完整,要求指定关系的主码、外码,以及工资不能低于 1500 元的约束。CREATE TABLE WORKS ( Eno CHAR (10) (a) , Cno CHAR (4) (b) , Salary int (c) , PRIMARY KEY (d) ,【问题 2】(6 分)(1)创建女员工信息的视图 FemaleEMP。属性有 Eno、Ename、Cno、Cname 和 Salary,请将下面 SQL 语句的空缺部分补充完整。CREATE (e) ASSELECT EMP.Eno, Ename, COMPANY.Cno, Cname, Salary From EMP, COMPANY, WORKS WHERE (f) ;(2)员工的工资由职称级别的修改自动调整,需要用触发器来实现员工工资的自动维护,函数 float Salary_value (char (10) Eno) 依据员工号计算员工新的工资。请将下面 SQL 语句的空缺部分补充完整。Create (g) Salary_TRG AFTER (h) ON EMP REFERENCING new row AS nrow FOR EACH ROW BEGIN UPDATE WORKS SET (i) WHERE (j) ; END【问题 3】(5 分)请将下面 SQL 语句的空缺部分补充完整。(1)查询员工最多的公司编号和公司名称。SELECT COMPANY.Cno, CnameFROM COMPANY, WORKSWHERE COMPANY.Cno=WORKS.CnoGROUP BY (k) HAVING (l) (SELECT COUNT (*) FROM WORKS GROUP BY Cno );(2)查询所有不在 “中国银行北京分行” 工作的员工工号和姓名。SELECT Eno, EnameFROM EMPWHERE Eno (m) ( SELECT Eno FROM (n) WHERE (o) AND Cname = ' 中国银行北京分行 ');【 答 案 】【问题 1】a) REFERENCES EMP (Eno)b) REFERENCES COMPANY (Cno)c) CHECK (Salary>=1500)d) (Eno,Cno)【解析】Eno 是 EMP 表的主键,因此 WORKS 表中 Eno 需定义为外码,引用 EMP 的 Eno;Cno 是 COMPANY 表的主键,因此 WORKS 表中 Cno 需定义为外码,引用 COMPANY 的 Cno;根据要求工资不低于 1500,需添加 CHECK 约束;员工可在多家公司工作,因此 WORKS 的主键是 Eno 和 Cno 的组合。【问题 2】e) VIEW FemaleEMP (Eno,Ename,Cno,Cname,Salary)f) EMP.Eno=WORKS.Eno AND COMPANY.Cno=WORKS.Cno AND Sex=' 女 'g) TRIGGERh) UPDATEi) salary=Salary_value (nrow.Eno)j) WORKS.Eno=nrow.Eno【解析】(1) 创建视图需使用 VIEW 关键字,同时指定视图属性;WHERE 条件需关联三张表,并且筛选出性别为女的员工。(2) 创建触发器需使用 TRIGGER 关键字,触发时机是 EMP 表的 UPDATE 操作;更新 WORKS 表的工资时调用指定函数,条件是员工号匹配新行的员工号。【问题 3】k) COMPANY.Cno, Cnamel) COUNT (*)>=ALLm) NOT IN(或 <>ANY)n) WORKS, COMPANYo) WORKS.Cno=COMPANY.Cno【解析】(1) GROUP BY 需包含 SELECT 中的所有非聚合字段;HAVING 子句需用 >=ALL 来匹配员工数量最多的公司。(2) 使用 NOT IN 或 <>ANY 来排除在目标公司工作的员工;子查询需关联 WORKS 和 COMPANY 表,筛选出目标公司的员工。【第 3 题】(题型:数据库设计题)题目:某省针对每年举行的足球联赛,拟开发一套信息管理系统,以方便管理球队、球员、主教练、主裁判、比赛等信息。【需求分析】(1)系统需要维护球队、球员、主教练、主裁判、比赛等信息。球队信息主要包括:球队编号、名称、成立时间、人数、主场地址、球队主教练。球员信息主要包括:姓名、身份证号、出生日期、身高、家庭住址。主教练信息主要包括:姓名、身份证号、出生日期、资格证书号、级别。主裁判信息主要包括:姓名、身份证号、出生日期、资格证书号、获取证书时间、级别。(2)每支球队有一名主教练和若干名球员。一名主教练只能受聘于一支球队,一名球员只能效力于一支球队。每支球队都有自己的唯一主场场地,且场地不能共用:(3)足球联赛采用主客场循环制,一周进行一轮比赛,一轮的所有比赛同时进行。(4)一场比赛有两支球队参加,一支球队作为主队身份、另一支作为客队身份参与比赛。一场比赛只能有一名主裁判,每场比赛有唯一的比赛编码,每场比赛都记录比分和日期。【概念结构设计】根据需求分析阶段的信息,设计的实体联系图(不完整)如图 3-1 所示。【逻辑结构设计】根据概念结构设计阶段完成的实体联系图,得出如下关系模式(不完整):球队(球队编号,名称,成立时间,人数,主场地址)球员(姓名,身份证号,出生日期,身高,家庭住址, (1) )主教练(姓名,身份证号,出生日期,资格证书号,级别, (2) )主裁判(姓名,身份证号,出生日期,资格证书号,获取证书时间,级别)比赛(比赛编码,主队编号,客队编号,主裁判身份证号,比分,日期)【问题 1】(6 分)补充图 3-1 中的联系和联系的类型。图 3-1 中的联系 “比赛” 应具有的属性是哪些?【问题 2】(4 分)根据图 3-1,将逻辑结构设计阶段生成的关系模式中的空 (1)~(2) 补充完整。【问题 3】(5 分)现在系统要增加赞助商信息,赞助商信息主要包括赞助商名称和赞助商编号。赞助商可以赞助某支球队,一支球队只能有一个赞助商,但赞助商可以赞助多支球队。赞助商也可以单独赞助某些球员,一名球员可以为多个赞助商代言。请根据该要求,对图 3-1 进行修改,画出修改后的实体间联系和联系的类型。【 答 案 】【问题 1】“比赛” 应具有的属性:比赛编码,比分,日期。【解析】根据需求,球员属于一支球队,球队有多名球员,因此球员与球队是 1:* 的 “效力” 联系;一场比赛由一名主裁判执裁,一名主裁判可执裁多场比赛,因此主裁判与比赛是 1:* 的 “执裁” 联系;一场比赛有一支主队和一支客队,一支球队可参与多场比赛,因此球队与比赛存在两个 1:* 的联系。比赛的属性为需求中明确的比赛编码、比分、日期。【问题 2】(1) 球队编号 (2) 球队编号【解析】球员和主教练都属于某一支球队,因此需要在关系模式中添加外码 “球队编号” 关联球队表。【问题 3】【解析】赞助商与球队是一对多关系(一个赞助商赞助多支球队,一支球队只有一个赞助商);赞助商与球员是多对多关系(一个赞助商可赞助多名球员,一名球员可为多个赞助商代言)。【第 4 题】(题型:数据库设计题)题目:某地人才交流中心为加强当地企业与求职人员的沟通,促进当地人力资源的合理配置,拟建立人才交流信息网。【需求描述】1.每位求职人员需填写《求职信息登记表》,并出示相关证件,经工作人员审核后录入求职人员信息。表中毕业证书编号为国家机关统一编码,编号具有唯一性。每个求职人员只能填写一部联系电话。2.每家招聘企业需填写《招聘信息登记表》,并出示相关证明及复印件,经工作人员核实后录入招聘企业信息。表中企业编号由系统自动生成,每个联系人只能填写一部联系电话。3.求职人员和招聘企业的基本信息会在系统长期保存,并分配给求职人员和招聘企业用于登录的用户名和密码。求职人员登录系统后可登记自己的从业经历、个人简历及特长,发布自己的求职意向信息;招聘企业的工作人员登录系统后可维护本企业的基本信息,发布本企业的岗位需求信息。4.求职人员可通过人才交流信息网查询企业的招聘信息并进行线下联系;招聘企业的工作人员也可通过人才交流信息网查询相关的求职人员信息并进行线下联系。5.求职人员入职后应修改自己的就业状态(在岗/求职);招聘企业在发布需求岗位有人员到岗后也应该及时修改需求人数。【逻辑结构设计】根据上述需求,设计出如下关系模式:个人信息(身份证号,姓名,性别,出生日期,毕业院校,专业名称,学历,毕业证书编号,联系电话,电子邮件,个人简历及特长)从业经历(身份证号,起止时间,企业名称,职位)求职意向(身份证号,职位名称,最低薪水)企业信息(企业编号,企业名称,地址,企业网址,联系人,联系电话,电子邮件,企业简介)岗位需求(企业编号,职位,专业,学历,薪水,人数,备注)【问题 1】(6 分)对关系 “个人信息”,请回答以下问题:(1) 列举出所有候选键。(2) 它是否为 3NF,用 60 字以内文字简要叙述理由。(3) 将其分解为 BC 范式,分解后的关系名依次为:个人信息 1,个人信息 2,…,并用下划线标示分解后的各关系模式的主键。【问题 2】(6 分)对关系 “企业信息”,请回答以下问题:(1) 列举出所有候选键。(2) 它是否为 2NF,用 60 字以内文字简要叙述理由。(3) 将其分解为 BC 范式,分解后的关系名依次为:企业信息 1,企业信息 2,…,并用下划线标示分解后的各关系模式的主键。【问题 3】(3 分)若要求个人的求职信息一经发布,即由系统自动查找符合求职要求的企业信息,填入表 R (身份证号,企业编号),在不修改系统应用程序的前提下,应采取什么方法来实现,用 100 字以内文字简要叙述解决方案。【 答 案 】【问题 1】(1) 候选码:毕业证书编号、身份证号(2) 不是 3NF。存在传递函数依赖:毕业证书编号→身份证号→姓名,非主属性对候选码存在传递依赖。(3) 个人信息 1(身份证号,姓名,性别,出生日期,联系电话,电子邮件,个人简历及特长)个人信息 2(身份证号,毕业院校,专业名称,学历,毕业证书编号)【解析】(1) 毕业证书编号具有唯一性,身份证号也具有唯一性,两者均可唯一标识个人信息,因此都是候选键。(2) 3NF 要求不存在非主属性对候选码的传递依赖,此处毕业证书编号通过身份证号间接决定姓名,存在传递依赖,因此不符合 3NF。(3) 分解时将基本个人信息和学历信息拆分,消除传递依赖,每个关系都符合 BCNF。【问题 2】(1) 候选码:(企业编号,联系人)(2) 不是 2NF。存在部分函数依赖:企业编号→企业名称,非主属性对候选码存在部分依赖。(3) 企业信息 1(企业编号,企业名称,地址,企业网址,企业简介)企业信息 2(企业编号,联系人,联系电话,电子邮件)【解析】(1) 企业编号可唯一标识企业,但同一企业有多个联系人,因此候选码是企业编号和联系人的组合。(2) 2NF 要求不存在非主属性对候选码的部分依赖,此处企业编号单独可决定企业名称,存在部分依赖,因此不符合 2NF。(3) 分解时将企业基本信息和联系人信息拆分,消除部分依赖,每个关系都符合 BCNF。【问题 3】创建 “求职意向” 表上的 INSERT 触发器,当有新求职意向插入时,自动查询匹配的 “岗位需求” 记录,将对应的身份证号和企业编号插入表 R。【解析】触发器可在表数据发生变化时自动执行逻辑,无需修改应用程序,符合题目要求。【第 5 题】(题型:事务与并发控制题)题目:某航空售票系统负责所有本地起飞航班的机票销售,并设有多个机票销售网点。以下为 E-SQL 编写的部分售票代码:
EXECSQLSELECT balance INTO :X FROM tickets WHERE flight=:flightno;printf(“航班%s当前剩余机票数为:%d\n请输入购票数:”,flightno, x );scanf(“%d”,&a);EXECSQLUPDATE tickets SET balance = :x - :a WHERE flight = :flightno ;