数据库综合练习题(2页).doc
-综合练习题(E-R图、SQL、规范化、事务)1、设某商业集团数据库中有三个实体集。一是“商店”实体集,属性有商店编号、商店名、地址等;二是“商品”实体集,属性有商品号、商品名、规格、单价等;三是“职工”实体集,属性有职工编号、姓名、性别、业绩等。商店与商品间存在“销售”联系,每个商店可销售多种商品,每种商品也可放在多个商店销售,每个商店销售一种商品,有月销售量;商店与职工间存在着“聘用”联系,每个商店有许多职工,每个职工只能在一个商店工作,商店聘用职工有聘期和月薪。2、请设计一个公司车队数据库,此数据库中需要保存的信息描述如下:部门:部门号、名称、负责人,其中部门号为唯一标识,名称不能为空;车队:车队号、名称、地址,其中车队号为唯一标识;司机:司机号、姓名、执照号、电话、工资,其中司机号为唯一标识;车辆:车牌号、车型、颜色、载重,其中车牌号为唯一标识;保险公司:保险公司号、名称、地址,其中保险公司号为唯一标识。它们之间的联系如下:该公司有若干车队,一个车队有多辆车,一辆车只能属于一个车队;公司中也有若干部门,一个部门可以调用多个车队的车辆,一个车队可以被多个部门调用,调用时需保存出车日期、车程、费用以及车辆数目信息;一个车队可以聘用多名司机,但一名司机只能为一个车队服务;一辆车只能在一家保险公司投保,但一家保险公司可为多辆车担保,投保时需保存投保日期、保险种类以及费用信息。3、工厂管理系统中,需要管理的数据由五部分组成:职工、部门、产品、零件、供应商。其属性如下:职工:职工号、姓名、性别、年龄、工种、级别部门:部门号、部门名、负责人、电话产品:产品号、产品名、型号零件:零件代号、零件名称、规格、价格供应商:供应商名、地址、联系人、电话语义说明:职工隶属一个部门,每个职工有一个直属领导;一个产品由多个职工加工,由一个职工检验;一个产品由多种零件组装,一种零件可以组装多种产品;零件可以由供应商供应,对应有供应的数量和日期4、下面的题目基于已知的四个关系模式:供应商表:s(sno,sname,city),其属性的名字依次为供应商号、供应商名和所在城市;项目表:j(jno,jname,city),其属性的名字依次为项目号、项目名、所在城市;零件表:p(pno,pname,color,weight),其属性的名字依次为零件号、零件名、颜色和重量;供应表:spj(sno,pno,jno,qty),其属性的名字依次为供应商号、零件号、项目号和数量。请使用SQL语句完成下面的操作:(1)创建零件表,其中零件号为主键,重量的值默认为0,颜色只能取“红”、“澄”、“黄”、“绿”、“蓝”、“紫”。(2)查询在“济南”的供应商号和名称。(3)查询项目名以“三建”开头的项目号和所在城市。(4)查询重量大于20的红色零件的零件信息。(5)查询项目“j1”使用的“p1”零件的总数量。(6)查询至少供应了项目“j2”使用的全部零件的供应商号。(7)查询既供应项目“j1”零件“p1”,又供应项目“j3”零件“p1”的供应商号。(8)假设数据库中存在项目使用零件表jp(jno,pno,sumqty),其属性分别为项目号、零件号、总数量。现在spj表上建立了一个触发器insert_spj,其定义如下:Create trigger insert_spj on spj after insert AsBeginDeclare jno char(4), pno char(4),sumqty int;Select jno=jno, pno=pno from inserted;Select sumqty=sum(qty) from spj where jno=jno and pno=pno;If sumqty>1000 Begin If exists(select * from jp where jno=jno and pno=pno) Update jp set sumqty=sumqty where where jno=jno and pno=pno; Else Insert into jp values( jno, pno, sumqty );EndEnd 请说明上述触发器的含义。(9)建立项目名为“三建”的项目视图,显示项目号、所在城市、供应商号、零件号、数量(10)修改j表,增加负责人manager属性列(11)创建新用户使其对s表有select和update的权限5、设有如下关系R课程名教师名教师地址C1C2C3C4马千里于得水余快于得水D1D1D2D1(1)它为第几范式? 为什么? (2)是否存在删除操作异常?若存在,则说明是在什么情况下发生的? (3)将它分解为高一级范式,分解后的关系是如何解决分解前可能存在的删除操作异常问题?6. 4 设A=1,B=1,有如下两个事务:T1: 读B; A=B+2; 写回 A; T2: 读A; B=A+3; 写回B。若这两个事务并发执行,列出可能结果。并发事务执行是否正确的标准是什么?-第 2 页-