数据库期末练习题(答案).docx
数据库原理练习题1、已?口一个创立数据库的T-SQL语句,请回答以下问题:CREATE DATABASE studentsON PRIMARY(NAME = students,FILENAME = 'D:Datastudents.mdf'),(NAME = students_data1,FILENAME = 'D:Datastudents_data1.ndf',SIZE = 5MB,FILEGROWTH = 0 ) LOG ON(NAME = students Jog,FILENAME = 'D:Datastudents_log.ldf',SIZE = 2MB,MAXSIZE = 6MB, FILEGROWTH = 10%)(1)这个数据库叫什么名字?保存在哪里?主数据文件的大小为多少? 答:这个数据库名字为students,保存在D:Data目录下,主数据文件没有 指明大小,默认为3MB。(2)次数据文件的大小为多少? FILEGROWTH = 0表示什么意思?答:次数据文件的大小为5MB, FILEGROWTH = 0表示不允许自动增长。 (3)日志文件的最大大小是多少?如果没有定义日志文件,该数据库有没有日 志文件?答:日志文件的最大大小为6MB。如果没有定义日志文件,系统会自动创立 一个日志文件。2、一个创立数据表的T-SQL语句,请回答以下问题:CREATE TABLE student ( sno CHAR(7) PRIMARY KEY, sname NCHAR(5) NOT NULL, ssex NCHAR(1) DEFAULT 男, sage TINYINT CHECK(BETWEEN 15 AND 30), sdept NVARCHAR(20)CHECK(Sdept in ('计算机系通信工程系信息管理系') )(1)该表的表名是什么?主码是什么?有没有外码?答:该表的表名是student,主码是sno,没有外码。(2)该表中取值不能为空的属性有哪几个?答:该表中取值不能为空的属性有sno、sname两个。(3)对ssex的约束是什么意思?能否取值为女'?答:默认值约束为“男”,可以取值为“女(4)对sage的取值限定在什么范围?如果输入软件工程系会出现什么情况? 答:sage的取值范围是大于等于15并且小于等于30,输入“软件工程系” 无法接收该数据。3、一个创立数据表的T-SQL语句,请回答以下问题:CREATE TABLE SC (SnoCHAR(7) NOT NULL,CnoCHAR(6) NOT NULL,Grade TINYINT CHECK(Between 0 And 120)PRIMARY KEY (Sno, Cno),FOREIGN KEY (Sno) REFERENCES Student(Sno), FOREIGN KEY (Cno) REFERENCES Course(Cno)(1)这个表的主码是什么?外码是什么?引用了什么表?答:主码是(sno,cno)。外码sno弓|用Student表,外码cno弓【用Course表。(2) Sno是主属性还是非主属性? Grade呢?答:sno是主属性,grade是非主属性。(3) Grade属性的取值范围是什么?答:grade>=0 and grade<=120o4、对于students数据库,回答以下问题:(1)写出T-SQL语句:查询计算机系的男生姓名和年龄;答:Select sname,sage from studentWhere sdept='计算机系'and ssex='男,(2)写出实现上述操作的关系表达式;答:略。(3)写出T-SQL语句:查询每个学生的选课门数和平均成绩,并按照平均成 绩的降序显示结果。答:Select count(*)选课门数,avg(grage)平均成绩 from SCGroup by SnoOrder by avg(grade) desc5、对于students数据库,写出实现以下操作的T-SQL语句:(1)查询成绩在80分以上的学生姓名、课程名和成绩,并按成绩的降序排列;答:Select sname5cname5grade from student sjoin sc on s.sno = sc.snojoin course c on o=oWhere grade > 80Order by grade desc(2)查询哪些课程没有人选,要求列出课程号和课程名;答:Select o5cname from course cLeft join sc on o = oWhere sc.eno is null(3)查询有考试成绩的所有学生的姓名、课程名和成绩,要求将查询结果保存 到一张新的永久表中,假设新表名为new_sc;答:Select sname5cname5grade into new_scfrom student sJoin sc on s.sno=sc.snoJoin course c on o=oWhere grade is NOT NULL(4)查询选修VB的学生学号、姓名、所在系和成绩,并对所在系进行如下处 理:当所在系为“计算机系”时,显示“CS”;当所在系为“信息管理系”时, 显示“IS”;当所在系为“通信工程系”时,显示“CO”;对其他系,均显示 “OTHERS”。答:Select s.sno 学号,sname 姓名,Case sdeptWhen '计算机系'then 'CS'When'信息管理系'then'IS'When '通信工程系'then 'CO'Else 'OTHERS'End as所在系,grade成绩from student sJoin sc on s.sno=sc.snoJoin course c on c,cno=oWhere cname=,VB,6、对于students数据库,写出用子查询实现如下操作的T-SQL语句:(1)查询选修“C001”课程的学生姓名和所在系;答:Select sname,sdept from studentWhere sno in ( Select sno from sc where cno=,C001,)(2)查询计算机系考试成绩最高的学生姓名;答:Select sname from student sJoin sc on s.sno = sc.snoWhere sdept =,计算机系,andgrade = ( Select max(grade) from scJoin student s on s.sno = sc.snoWhere sdept ='计算机系)(3)查询“C001”课程的考试成绩高于“C001”课程的平均成绩的学生的学 号和“C001”的课程成绩。答:Select sno,grade from sc where eno = ' C001'And grade > (select avg(grade) from sc where eno = ' C001')7、将计算机系所有选修“计算机文化学”课程的学生成绩加10分,分别用子 查询和多表连接查询完成。答:(1)子查询Update sc set grade=grade+10Where sno in( Select sno from student where sdept ='计算机系) and eno in( Select eno from course where cname ='计算机文化学') (2)多表连接Update sc set grade=grade+10from sc join student s on sc.sno = s.snojoin course c on o = sc.enoWhere sdept-计算机系'and cname£+算机文化学,8、设有关系模式 R(A,B,C,D), F=A-C,C-A,BAC,D-AC:(1)求 B+, (AD)+;答:B+=BAC, (AD)+=ACD(2)求R的全部候选码,判断R属于第几范式;答:B、D: L类属性,A、C: LR属性。(BD)+=ABCD,包含R的所有属性,是R的唯一候选码。因为B-A或D-C,存在非主属性对候选码的局部函数依赖,所以不属 于2NF,故为1NF。(3)如果R不是2NF,试将R规范化为2NF模式集;如果R不是3NF,试将R规范化为3NF模式集。答:F=A一。一人力一人0。一人。等价于F=A>C,C->A,B>A, B>0,D>A,D>0 那么 2NF 模式集为:R1(B,A,C), R2(D,A,C), R3(B,D,A,C)9、设有关系模式:学生(学号,姓名,所在系,班号,班主任,系主任),其语 义为:一个学生只在一个系的一个班学习,一个系只有一个系主任,一个班只 有一个班主任,一个系可以有多个班。(1)请指出此关系模式的候选码;答:该关系模式的函数依赖集为:(学号一姓名,学号一所在系,学号一班号,所在系一系主任,班号一班主任,班号一所在系L类属性:学号,LR类属性:班号,所在系学号+=(学号,姓名,所在系,系主任,班号,班主任),包含所有属性,学号是唯 一候选码。(2)写出该关系模式的极小函数依赖集;答:学号一姓名,学号一班号,班号一所在系,所在系一系主任,班号一班主任 (3)该关系模式属于第几范式?简单说明理由;答:、2NF。因为有:学号一班号,班号一所在系,因此存在传递函数依赖: 学号彗所在系(4)假设不是3NF的,将其规范化为3NF关系模式,并指出分解后每个关系模 式的主码和外码。答:学生(学号,姓名,班号,所在系)班级(班号,班主任,所在系)系别(所在系,系主任)注:下划线为主码,蓝色为外码10、设要建立描述顾客在商店的购物情况的数据库应用系统,该系统有如下要 求:一个商店可有多名顾客购物,一个顾客可到多个商店购物,顾客每次购物 有一个购物金额和购物日期。规定每个顾客每天在每个商店最多有一次购物, 每次购物可购买多种商品。需要描述的“商店”信息包括:商店编号、商店名、 地址、联系 ;需要描述的顾客信息包括:顾客号、姓名、住址、身份证号、 性别。(1)请画出描述该应用系统的E-R图,要求注明各实体的属性以及联系的种类;(2)将该E-R图转换为关系模式,并指出每个关系模式的主码和外码。 答:顾客(顾客号,身份证号,姓名,性别,地址)商店(商店编号,商店名,地址,联系 )购物(顾客号,商店编号,购物日期,购物金额)注:下划线为主码,蓝色为外码