3.关系模型的数据完整性包含哪些内容?分别说明每一种完整性的作用。 答:关系模型的数据完整性包含: 实体完整性:保证RM元组唯一性;
参照完整性:定义外码与主码之间的引用规则,实质是不允许引用不存在的实体; 用户自定义完整性:针对某一具体RDB的约束条件,反映某一具体应用所涉及的数据必须满足的语义要求。
4.关系数据库的规范化理论是为了解决什么问题?一个关系模式从1NF到2NF,消除了原关系模式的什么问题?
答:由于数据之间存在着联系和约束,在关系模式的关系中可能会存在数据冗余和操作异常现象,因此,需把关系模式进行分解,以消除冗余和异常现象。
一个关系模式从1NF到2NF,消除了原关系模式中的部分函数依赖。 四、名词解释(本题10分,每小题2分)
1.实体集R、S之间1:N的联系:对于R中每一实体,S中有N个实体与之联系;而对于S中每一实体,R中至多只有一个实体与之联系。
2.数据库:按一定的组织结构集成存储在计算机存储介质上的相关数据及数据之间逻辑关系的集合。
3.基表:实表。独立存在的表,不由其它表导出。
4.完全函数依赖:若R(U)中,已知X→Y,且对于任何X的真子集X’都有X’→Y,则称Y完全函数依赖于X,记作X→Y。
5.外模式:也称“子模式,用户模式”,是DB用户看到的(或用到的)那部分数据视图。
五、E-R模型设计题(本题25分)
1.设有商务数据库用以处理销售记帐,它涉及的数据包括顾客、商品信息。试设计一个E-R模型,并将之转换为关系模型。(注:关键字用下划线标出)(10分)
(1)E-R图(属性略):
N M 顾客 商品 购买
日期 数量
(2)关系模型:顾客(顾客号,姓名,地址,电话,?); 商品(商品号,品名,型号规格,单价,?);
购买(顾客号,商品号,数量,日期,?)。
2. 学校课程管理子系统主要包括的实体有学生、课程、教师、教室,试设计该子系统E-R模型,并将之转换为关系模型。(注:关键字用下划线标出)(15分)
(1)E-R图(属性略): N M 课程 学生 选课 M P 教室 授课 成绩 N 时间 教师 (2)关系模型:学生(学号,姓名,年龄,?); 课程(课程号,课程名,课时,?); 教师(教师号,姓名,职称,?);
教室(楼名,教室号,?); 选课(学号,课程号,成绩,?);
授课(教师号,课程号,楼名,教室号,时间,?)。
六、对于某图书出版管理数据库,其中有两个表: publishers(pub_id,pub_name,city)
titles(title_id,title_name,type,pub_id,price,pubdate)
含义为:出版商表(出版商代号,出版商名字,所在城市),书籍表(书号,书名,书的种类,出版商代号,价格,出版日期),并规定每一出版商有唯一的代号,每一种书以书号标识。写出实现下列各功能的SQL语句。(共24分)
10. 用SQL的数据定义语言建立titles表,并定义其主码与外码。(4分) Create table title(title_id char(10),
title_name char(20), type char(10), pub_id char(10), price numeric(6,2), pubdate datetime, primary key(title_id),
foreign key(pub_id) references publishers(pud_id));
11. 把某一出版商的信息(0735,人民邮电出版社,北京)录入到publishers表中。(2
分)
Insert into publishers values(‘0735’,’人民邮电出版社’,’北京’); 12. 把书的种类为“计算机”类的书的价格降低30%。(2分)
Update titles set price=price*(1-0.3) Where type=’计算机’;
13. 查询书的价格在20至50元之间的书的书号、种类和价格。(2分)
Select title_id,type,price from titles where price between 20 and 50; 14. 按书的种类分类,查询各类书籍的平均价格,并按平均价格降序排列。(3分)
Select avg(price) from titles group by type
Order by avg(price) desc;
15. 从publishers 表和titles表中查询书的书号、书名、种类及出版商名字。(3分)
Select title_id,title_name,type,pub_name from titles,publishers
where pub_id= publishers. pub_id; 16. 查询所有价格高于平均价格的书。(3分)
Select * from titles where price>(select avg(price) from titles); 17. 列出“机械工业出版社”自2001年以来出版的各种书籍情况。(3分)
Select * from titles where pub_id=(select pub_id from publishers
Where pub_name=’机械工业出版社’)
And pubdate>=’2001/01/01’;
18. 删除所在城市为“沈阳”的出版商的信息。(2分)
Delete from publishers where city=’沈阳’;
1、 对于教学数据库(TEACH)构造3个基本表:
S(SNUM,SNAME,SDEPT,AGE,SEX);( 注:SDEPT为“学生所属系/院名”) C(CNUM,CNAME,TEACHER,PCNUM);( 注:PCNUM为“先修课程编号”) SC(SNUM,CNUM,GRADE);
(1) 创建教学数据库:学生信息表、课程信息表、学生选课表;
(2) 为每个基表添加多条记录(自己添加,所添加的数据要能够满足以下各题的查询要求); (3) 检索年龄大于23岁的男学生的学号和姓名; (4) 检索’liu’老师所授课程的课程号和课程名;
(5) 检索学号为’S3’的学生所学课程的课程名与任课教师名; (6) 检索至少选修’liu’老师所授课程中一门课程的男学生姓名; (7) 检索没有选修’liu’老师所授课程的女学生姓名和学号;
(8) 检索’wang’同学不学的课程的课程号; (9) 检索至少选修两门课程的学生的姓名和学号; (10) (11) (12) (13) (14) (15)
检索全部学生都选修的课程的课程号与课程名; 检索选修课程包含’liu’老师所授课程的学生学号; 在表C中统计开设课程的教师人数; 求选修’C4’课程的女学生的平均年龄;
求每个学生选修课程(已有成绩)的门数和平均成绩;
统计每个学生选修课程的门数(超过5门的学生才统计),要求输出学生学号和选
修门数,查询结果按门数降序,若门数相同,按学号升序; (16) (17) (18) (19) (20) (21)
检索学号比’wang’同学大,而年龄比他小的学生姓名; 在表SC中检索成绩为空的学生学号和课程号; 检索姓名以L打头的所有学生的姓名和年龄; 求年龄大于女同学平均年龄的男学生姓名和年龄; 求年龄大于所有女同学年龄的男学生姓名和年龄;
检索所授课程平均成绩大于80分的教师姓名,并将检索到的值送往另一个表
FACULTY(TNAME);(注:该表由学生自己创建) (22) (23) (24) (25) (26)
在SC中删除尚无成绩的选课元组;
将选修’liu’老师课程的女同学选课元组全部删除; 将’MATHS’课不及格的成绩全改为60分; 将低于所有课程总平均成绩的女同学成绩提高5%;
在表SC中修改’C4’课程的成绩,若成绩小于等于70分时提高5%,若成绩大于
70分时提高4%; (27) (28) (29) (30) (31) (32)
在表SC中,当某个成绩低于全部课程的平均成绩时,提高5%; 求男同学每一年龄的人数;
求女同学的人数和平均年龄及平均成绩; 检索开设两门以上课程的教师姓名;
检索未选修’wang’老师所授全部课程的学生学号;
统计选修每一门课程的男女学生人数和平均成绩,要求显示
(C#,CNAME,TEACHER,SEX,NUM,AVG_GRADE),其中NUM和AVG_GRADE为人数和平均成绩。
2、 对于图书发行数据库(B_PUBLISH)构造4个基本表: STORE(SNO,SNAME,ADDRESS) ;( 注:STORE为“书店”) LIBRARY(LNO,LNAME,CITY,TEL);( 注:LIBRARY为“图书馆”)
BOOK(BNO,BNAME,PRICE) ;( 注:BOOK为“图书”)
LBS(LNO,BNO,SNO,QTY); ( 注:LBS为“馆藏”;QTY为“数量”)
(1)创建图书发行数据库:书店信息表、图书馆信息表、图书信息表、馆藏信息表; (2)为每个基表添加多条记录(自己添加,所添加的数据要能够满足以下各题的查询要求); (3)查找’L1’从书店’S1’购买的图书书号及其册数; (4)取出馆址在’Shanghai’的馆名及电话号码; (5)取出’S3’发行的图书书名和数量;
(6)取出已发行图书中最贵和最便宜的那种书的书名和定价; (7)查找购买图书’B4’最多的图书馆馆名; (8)取出’L4’ 收藏图书的书名;
(9)取出收藏图书’情报检索语言’的馆名; (10)将’B5’的单价更改为32.50元; (11)删去’B2’及其相关的馆藏记录;
(12)将(‘B6’,’人工智能原理’,42.00)登入关系BOOK。 3、实验结束时提交《课程设计报告》,内容包含: (1)列出每个基表的结构及记录构成;
(2)对第2大题的每小题,均要求用关系代数表示; (3)用SQL Server 2000语句完成每一题; (4)每题的结果。
3、 对于教学数据库(TEACH)构造3个基本表:
S(SNUM,SNAME,SDEPT,AGE,SEX);( 注:SDEPT为“学生所属系/院名”) C(CNUM,CNAME,TEACHER,PCNUM);( 注:PCNUM为“先修课程编号”) SC(SNUM,CNUM,GRADE); (33) (34)
创建教学数据库:学生信息表、课程信息表、学生选课表;
为每个基表添加多条记录(自己添加,所添加的数据要能够满足以下各题的查询要
求); (35)
检索年龄大于23岁的男学生的学号和姓名;
select snum,sname from s where age>23 and sex='男' (36)
检索’liu’老师所授课程的课程号和课程名;
select cnum,cname from c where teacher='liu'