11.如果一个关系模式R是1NF,并且关系的每个决定因子都是候选码,那么R至少应该是_____________________范式。
(难度系数A)正确答案:BC范式 三、简答题:(共15分)
1、数据库系统中有哪三层模式结构?采用三层模式结构有什么好处?(5分)
(难度系数B)正确答案:
答:数据库系统三级模式结构是指数据库系统是由外模式、模式和内模式三级构成。 (1分)
数据库系统的三级模式是对数据的三个抽象级别,它把数据的具体组织留给DBMS管理,使用户能逻辑地抽象地处理数据,而不必关心数据在计算机中的具体表示方式与存储方式。为了能够在内部实现这三个抽象层次的联系和转换,数据库管理系统在这三级模式之间提供了两层映象:
外模式/模式映象, 模式/内模式映象 (3分)
正是这两层映象保证了数据库系统中的数据能够具有较高的逻辑独立性和物理独立性。 (1分)
2、什么是数据库的安全性?DBMS有哪些安全性措施?正确答案:
答:数据库的安全性是保护数据库以防止不合法使用所造成的数据泄露、更改或破坏。(2分)
DBMS主要通过以下方法来保护数据库的安全的:通过定义用户标识对用户身份进行鉴定,只允许合法的用户才能进入系统;通过定义用户的访问权限,对于合法的用户只能访问它有权访问的数据;通过定义视图,屏蔽掉用户不能访问的数据;通过对数据加密以及通过审计的功能等方法来保护数据库中的安全性的.(3分) 3、在数据库设计过程中将E-R模型转换为关系数据模型的转换原则是什么?(5分) (难度系数B)正确答案:
答:E-R图中的每个实体,对应一个关系,该关系具有属性为实体的全部属性,关键字为实体的关键字。E-R图中的一个联系对应一个关系,该关系具有属性为联系的属性以及该联系相关的实体的关键字。考虑到数据库优化,根据联系类型不同在转换为关系模式时具体处理不同: (2分) (1)联系类型为1:1时,-先将两个实体分别转换两个关系模式,然后在任意一
个关系模式中加入另一个关系模式的键和联系类型的属性。 (1分) (2)1:N-先将两个实体分别转换为两个关系模式,然后在N端实体转换的关系模式中加入1端实体转换的关系模式的键和联系类型的属性。 (1分) (3)M:N-先将两个实体分别转换为两个关系模式,然后将联系类型转换为第三个关系模式,其属性由两端实体的键和联系类型的属性构成。 (1分)
四、T-SQL综合题(共35分)
1、有学生-课程关系数据库,各关系表描述如下:
Student 列名 Sno Sname Ssex Sage Sdept Course
列名 Cno Cname 说明 数据类型 约束 说明 学号 姓名 性别 年龄 院系 数据类型 约束 字符(8) 主键 字符(12) 非空,唯一 字符(2) 取‘男’或‘女’, 默认值 ‘男’ 整型 取值15~36,默认值22 字符(20) 默认 ‘计算机系’ 课程号 字符(8) 主键 课程名 字符(8) 非空 Teacher 教师名 字符(10) 唯一 SC 列名 Sno Cno 说明 学号 课程号 数据类型 约束 字符(8) 主键,参照Student表,级联更新和删除 字符(8) 主键,参照Course表,级联更新,拒绝删除 短整型 取值0~100 Grade 成绩
(1)用关系代数表达式表示下列问题
1)检索选修了课程号为C5的学生学号、年龄和院系; (2分)
(难度系数B)正确答案:
∏学号, 年龄,院系(Student (?课程号=‘C5’ (SC) ) ) 或 ∏学号, 年龄,院系( ?课程号=‘C5’( SC Student))
2)检索选修了教师‘李华’所授课程的学生姓名和学号 ; (3分)
(难度系数B)正确答案:
∏姓名, 学号(Student (SC (?授课教师=‘李华’ (Course) ) ) ) 或 ∏姓名, 学号( ?授课教师=‘李华’( Student SC Course))
(2)用SQL语句实现下列问题
1)写出创建Student表的T-SQL语句 ; (5分)
(难度系数A)正确答案:
CREATE TABLE Student
( Sno CHAR(8) PRIMARY KEY,
Sname CHAR(12) NOT NULL UNIQUE,
Ssex CHAR(2) CHECK(Ssex in('男','女')) DEFAULT '男', Sage INT CHECK(Sage>=15 AND Sage<=36) DEFAULT 22, Sdept CHAR(20) DEFAULT ‘计算机系’);
2)检索课程名以\开头,且倒数第3个字符为 k的课程的详细情况;(4分)
(难度系数A)正确答案:
SELECT * FROM Course
WHERE Cname LIKE 'DB\\_%k_ _ _' ESCAPE ' \\ ';
3)向学生选修课程表中插入元组“学生S10选修课程号C4”。 (2分) (难度系数C)正确答案:
INSERT INTO SC (Sno, Cno) VALUES( ‘S10’,’ C4’ )
4) 删除选课成绩在55分以下的学生记录; (4分)
(难度系数A)正确答案:
DELETE
FROM Student WHERE SNO IN
(SELECT SNO FROM SC
WHERE GRADE<55);
或
DELETE
FROM Student
WHERE Student.SNO = SC.SNO AND SC.GRADE<55 ;
5) 把“高等数学”课程成绩提高8%; (3分)
(难度系数B)正确答案:
UPDATE SC
SET Grade=Grade*1.08 WHERE Cno IN
(SELECT Cno FROM Course
WHERE Cname=‘高等数学’);
6)求出女同学的每一年龄组(超过3人)有多少人?要求查询结果按人数降序排列,人数相同的按年龄升序排列; (5分)
(难度系数A)正确答案:
SELECT Sage, COUNT(Sno) FROM Student WHERE Ssex=‘女’
GROUP BY Sage HAVING COUNT(Sno)>3
ORDER BY 2 DESC, Sage ASC //其中ASC也可以省略不写
7)定义视图S_age,其中包括学生学号以及每个学生选修课程的门数(要求成绩非空)和平均成绩; (5分) (难度系数A)正确答案:
CREATE VIEW S_age (Sno, Cno_num, Avg_grade) AS SELECT Sno,COUNT(Cno),AVG(grade) FROM SC
WHERE grade IS NOT NULL
GROUP BY Sno
8)在Course表中增加一个类型为char(10)的职称(pro)列; (2分) (难度系数C)正确答案: alter table Course
add pro char(10)
相关推荐: