欢迎来到天天文库
浏览记录
ID:22739218
大小:342.51 KB
页数:10页
时间:2018-10-31
《中级数据库系统工程师2005上半年下午试题答案及详细解析》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、第14章数据库系统工程师级下午试题分析与解答试题一分析参见软件设计师。试题二阅读下列说明,回答问题1至问题5,将解答填入对应栏内。[说明]某工厂的仓库管理数据库的部分关系模式如下所示:仓库(仓库号,面积,负责人,电话)原材料(编号,名称,数量,储备量,仓库号)要求一种原材料只能存放在同一仓库中。“仓库”和“原材料”的关系实例分别如表2-1和表2-2所示。表2-1“仓库”关系(表格)仓库号面积负责人电话仓库号面积负责人电话01500李劲松8765412103300郑爽8765412302300陈东明8765412204400刘春来87654125表2-2“原材料”关系编号名称
2、数量储备量仓库号1001小麦10050012001玉米5030011002大豆2010022002花生3050023001菜油602003【问题1】根据上述说明,用SQL定义“原材料”和“仓库”的关系模式如下,请在空缺处填入正确的内容。CREATETABLE仓库(仓库号CHAR(4),面积INT,负责人CHAR(8),电话CHAR(8),(a));//主键定义CREATETABLE原材料(编号CHAR(4)(b),//主键定义名称CHAR(16),数量INT,储备量INT,仓库号(c),(d));//外键定义【问题2】将下面的SQL语句补充完整,完成“查询存放原材料数量最多
3、的仓库号”的功能。SELECT仓库号FROM(e)(f);【问题3】将下面的SQL语句补充完整,完成“01号仓库所存储的原材料信息只能由管理员李劲松米维护,而采购员李强能够查询所有原材料的库存信息”的功能。CREATEVIEWraws_in_wh01ASSELECT(g)FROM原材料WHERE仓库号="01";GRANT(h)ON(i)TO李劲松;GRANT(j)ON(k)TO李强;【问题4】仓库管理数据库的订购计划关系模式为:订购计划(原材料编号,订购数量)。采用下面的触发器程序可以实现“当仓库中的任一原材料的数量小于其储备量时,向订购计划表中插入该原材料的订购记录,其
4、订购数量为储备量的三倍”的功能。请将该程序的空缺部分补充完整。CREATETRIGGERins_order_triggerAFTER(1)ON原材料REFERENCINGNEWROWASnrowFOREACHROWWHENnrow.数量<arow.储备量INSERTINTO订购计划VALUES((m),(n));【问题5】如果一种原材料可以在多个仓库中存放,则问题4中的触发器程序存在什么问题,如何修改?试题二分析[问题1]本问题考查应试者对SQL数据库定义语言的掌握。通过给出的关系模式及关系实例,完成数据库定义语句中的主键及外键的定义部分。主码的定义可以有3种:在列级约束中
5、用NOTNULLUNIQUE或PRIMARYKEY指定;在表级约束中用PRIMARYKEY<主键,的方式定义。前两种方法只适用于单一属性作主码的情况,后一种适用于任何情况。参照完整性的指定使用FOREIGNKEY<外键>REFERENCES<被参照关系>(《被参照属性>)的方式定义,参照关系的域应和被参照数据的域相同。[问题2]本题考查应试者对SQL查询语句的掌握。完成本查询的思路:根据原材料表,按照“仓库号”分组,组内的记录对“数量”求和,分组求和得到的最大值对应的仓库号即为所求。参考答案中的子查询完成各仓库存储数量的求和,外部查询输出组内“数量”求和为最大值的仓库号。[
6、问题3]本问题考查应试者对SQL视图定义和授权语句的掌握。题干给出了通过视图和授权机制实现数据库安全性的方法:建立了01号仓库的视图,将对视图的更新权限赋给李劲松。题干同时要求对原材料的查询权限赋予李强,可以直接使用授权语句。授权的基本语法:GRANT<权限>ON<对象>TO<用户名>;[问题4]本问题考查应试者对触发器程序编写的掌握。空(1)处要求填入的是触发操作(INSERT、UPDATE或DELETE),空(m),(n)处填入的是欲插入的值。本题的关键是读懂程序。[问题5]本题存在问题:触发器程序判定某一原材料“数量”是否小于其存储量时,是按照当前记录的“数量”来判定
7、的,当一种原材料存储在多个仓库时,这样判定是错误的,应根据该原材料在各仓库的存储总量判定。参考答案[问题1](a)PRIMARYKEY仓库号(b)PRIMARYKEY或NOTNULLUNIQUE或NOTNULLPRIMARYKEY(c)CHAR(4)(d)FOREIGNKEY仓库号REFERENCES仓库(仓库号)[问题2](e)原材料(f)GROUPBY仓库号HAVINGSUM(数量)>=ANY(SELECTSUM(数量)FROM原材料GROUPBY仓库号)[问题3](g)*或编号,名称,数量,储备量,仓库号(h
此文档下载收益归作者所有