浙江理工大学2011—2012学年第2学期。
数据库原理与应用》期末试卷(a)卷。
本人郑重承诺:本人已阅读并且透彻地理解《浙江理工大学考场规则》,愿意在考试中自觉遵守这些规定,保证按规定的程序和要求参加考试,如有违反,自愿按《浙江理工大学学生违纪处分规定》有关条款接受处理。
承诺人签名学号班级。
一、解答题(本题共35分)
1.某公司需建立产品信息数据库,其语义如下:
一种产品可以使用多个不同种类的部件,也可以使用多个不同种类的零件:一种部件至少被用在一种产品中;一种部件可以由多个不同种类的零件组成;一种零件至少被用在一种产品或一种部件中;
对于一种具体的部件,要记录这种部件使用的各种零件的数量;
对于一种具体的产品,要记录这种产品使用的各种部件数量和各种零件数量,但部件所使用的零件数量不计入该产品的零件数量;
一个**商可**多种零件,但一种零件只能由一个**商**。
图1. 产品信息数据库e—r图。
在此e-r图中,实体的属性完整,试完成下列各题:
根据以上需求,在图1中写出各个实体(型)之间的联系及其联系的属性。(7分)
根据e-r图导出该数据库的各个关系模式,标出每个关系模式的主码和外码,并根据范式理论,分析上述各个关系模式是否属于3nf。(10分)
2.某数据库包含学生(students)、课程(courses)、选课(studcourses)等3个关系模式,其基本数据如表1所示,试解答以下各题。
表1. 关系数据库实例。
a)学生关系:studentsb)课程关系:coursesc)选课关系:studcourses
关系代数π2,4(students(π1,2(stucourses)÷π1(σ3=2(courses)))的计算结果为:(6分)
检索学生“胡斌”没有选修过的课程的名称,写出其关系代数表达式。(6分)
已知某数据检索的关系代数表达式如下:
2(studentsσ1=4^2≠5(stucourses×stucourses)),写出与该语句对应的t-sql语句。(6分)
二、程序阅读题(本题共30分,每小题6分)
已知数据表test1和test2的定义如下。其数据分别如表2和表3所示(表中未列出的数据需要自己计算得出),写出下列各个小题中select语句的输出结果。
create table test1 (productid char(2) primary key,productname varchar(20),category char(1),price money,
ytdsales int,rowid int identity(10,2) )
gocreate table test2 ( orderid char(4),orderdate datetime,qty int default(0),productid char(2),primary key(orderid, productid) )
表2. test1表数据表3. test2表数据。
第1小题。create procedure pro1 @str nvarchar(20)
asselect as 'orderday', qty*price as 'amt' from test2 a
join test1 b on
where productname like @str and datediff(month,orderdate,getdate())6
order by amt desc
goexecute pro1 '%ir]o%'
go第2小题。
with tmp as
select category,count(*)as number from test1
group by category with rollup)
select case category
when 'a' then 'water'
when 'b' then 'fruit'
when 'c' then 'leaf'
else '*t*' end as 'category',number from tmp
go第3小题。
declare @t table (pid char(2), qty int)
insert into @t (pid,qty) select productid,sum(qty) from test2
group by productid h**ing sum(qty)>14
select as 'pname',qty from @t a,test1 b
where
go第4小题。
drop function fn1
gocreate function fn1 (@v1 char(2))
returns int as
begindeclare @x int
select @x=sum(qty) from test2 where productid=@v1
if @x is null set @x=0
return(@x)
end go
update test1 set ytdsales=
select productid,productname,ytdsales,rowid from test1 where rowid>17
go第5小题。
alter table test2 add ytdqty int
godeclare c1 cursor for select productid,qty from test2
order by productid,orderdate
open c1
declare @qty int,@qty1 int,@id char(2),@id1 char(2),@price money
fetch next from c1 into @id1,@qty1
set @id=''id
set @qty=0
while @@fetch_status=0
beginif @id<>@id1
beginset @id=@id1
set @qty=@qty1
end else set @qty=@qty+@qty1
update test2 set ytdqty=@qty where current of c1
fetch next from c1 into @id1,@qty1
enddeallocate c1
select productid,orderid,convert(varchar(10),orderdate,120) as 'orderdate',qty,ytdqty
from test2 where productid like 'c[1-3]' order by productid,orderdate
go 三、程序设计题(本题共35分,任选5小题解答,每小题7分)
数据库sales用来存放某企业产品销售数据,它有4张表,表products用来存放产品信息(其中合计销售额pf6是未知的);表customers用来存放客户信息;表orders用来存放订单信息;orderitems用来存放订单明细信息。这4张表的结构见表4~表7。
表4. products表结构。
表5. customers表结构。
表6. orders表结构。
表7. orderitems表结构。
试编写t-sql语句,完成以下各项功能(注意必须按试题中规定的列名答题,不能篡改列名,否则答题无效。临时表可自行定义):
1. 根据orderitems表结构描述和各个约束条件,编写创建该表所需的t-sql语句,并创建由订单编号和产品编号组成的组合主键。
2. 根据各表数据,列出客户名称为b's beverages的这个客户2023年度所购买的全部产品的名称。
2019模拟卷
2012年数学能力题模拟卷。一 填空。14分 2 甲乙两人共有203.5元,乙的钱数的小数点向右移动一位,就和甲的钱数一样多,甲有 元。3 甲数是a,比乙数的3倍多b,乙数是 4 一个三位小数保留两位小数后是10.00,这个三位小数最大是 最小是 11 0.2727 小数部分第100位上的数字是 从...
2019模拟卷
黑龙江省试卷。一 填空题 每空1分,共20分 1 一道数学题,全班35人做对,5人做错,则正确率是 错误率是 2 一个长方体的礼品盒长是8厘米,宽是3厘米,高是5厘米,在这个长方体的各个面中最大的一个面的面积是 平方厘米,最小的一个面的面积是 平方厘米。3 王宁家去年存入银行4000元钱,定期三年,...
2019模拟卷
2010 2011学年度第二学期六年级语文水平测试题。全卷共6页,十大题,满分120分,答卷时间100分钟。一 读拼音,写汉字。6分 市义工联在北湖广场举行义卖义诊义演活动,此举得到社会各界的d ng l支持,所得将全部ju n z ng给市慈善机构,热心市民的q n c q n l使我市的助学助残...