?cno,cname((SC??sno(Student))?Course)
习题4
(可以有其他的表达式形式)
1、 试述SQL语言有什么特点?
1)综合统一
2)高度非过程化
3)面向集合的操作方式
4)以同一种语法结构提供多种使用方式 5)语言简洁,易学易用 2、 试述SQL 的定义功能。
SQL的数据定义语句包括模式定义、表定义和索引定义。
3、 针对前面建立的表格Student、Course和SC,试用SQL完成下面的操作: 1)在Course表中添加一列,该列存放授课教师的姓名。 ALTER table Course
ADD teachernamechar(10);
2)将SC表中的Grade一列的数据类型改为SMALLINT。 ALTER table SC
ALTER COLUMN Grade smallint; 3)删除表Student中的Snat列。 ALTER table Student DROP Snat
4)查询学生的所有选课信息。 SELECT * FROM SC
5)查询计算机系年龄在18到20岁之间女生的姓名,年龄。 SELECT Sname,Sage FROM Student
WHERE Sdep=?计算机? and Sage Between 18 and 20
6)查询总成绩超过200分的学生,列出其学号和总分。 SELECT Sno,Sum(Grade)总分 FROM SC
GROUP BY Sno
HAVING Sum(Grade)>200
7)查询没有选修“数据库原理”课程的学生的姓名和所在系 SELECT Sname ,Sdept FROM Student
WHERE Sno NOT IN (SELECT Sno
FROM SC
WHERE Cno=(SELECT Cno
FROM Course
WHERE Cname=?数据库原理?))
8)查询哪些学生没有选课,列出学号和姓名 SELECT Sno,Sname FROM Student
WHERE Sno NOT IN (SELECT Sno
FROM SC)
9)查询001号课程的最高分、最低分和平均分。 SELECT MAX(Grade),MIN(Grade),AVG(Grade) FROM SC
WHERE Cno=?001?
10)将“操作系统”课程的学分改为2学分。 UPDATE Course SET Credit=2
WHERE Cname=?操作系统?
11)将计算机系学生的“高数”成绩加10分。 UPDATE SC
SET Grade=Grade+10
WHERE Sno IN (SELECT Sno
FROM Student
WHERE Sdept=?计算机?) And
Cno=(SELECT Cno
FROM Course
WHERE Cname=?高数?)
4、数据库采用索引有什么优点?
1)使用索引加快数据查询的速度 2)使用索引保证数据的唯一性 3)使用索引加快连接速度
5、什么是基本表?什么是视图?两者的区别和联系是什么?
基本关系是实际存在的表,是实际存储数据的逻辑表示。 视图是从一个或几个基本表导出的表,是基本表的部分行和列数据的组合。数据库中只存放视图的定义,而不存放视图对应的数据,这些数据仍存放在原来的基本表中。因此,它是一个虚表。
基本表中的数据发生变化,从视图中查询出的数据也随之改变了。视图就像一个窗口,透过它可以看到数据库中自己感兴趣的数据及变化。
视图可以从一个基本表中提取数据,也可以从多个基本表中提取数据,甚至可以从其他视图中提取数据,构成新视图的内容。对视图的操作最后会转换成对基本表的操作。视图一经定义,就可以和基本表一样被查询、被删除。
6、试述视图的优点。
1)视图能够简化用户的操作
2)视图使用户从多种角度看待同一数据 3)提供了一定程度的逻辑独立性 4)视图能够对机密数据提供安全保护 5)改进性能
7、所有视图是否都可以更新?为什么? 在关系数据库中,并不是所有的视图都是可更新的,因为有些视图的更新不能唯一地有意义地转换成对相应基本表的更新。目前各个关系数据库一般只允许对行列子集视图进行更新,而且各个系统对视图的更新还有更进一步的规定。
8、利用表格Student、Course和SC,试用SQL语句完成以下创建视图操作: 1)查询学生的学号、姓名、政治面貌 CREATE VIEW S_N AS
SELECT Sno,Sname,Spol FROM Student
2)查询每个学生的选课门数,要求列出学生的学号和选课门数。 CREATE VIEW Course_S AS
SELECT Sno,count(*) FROM SC GROUP BY Sno
3)查询计算机系C语言程序设计成绩最高的学生学号、姓名。
CREATE VIEW C_MAX AS
SELECT Sno,Sname FROM Student
WHERE Sno IN (SELECT Sno
FROM SC
WHERE Cno=(SELECT Cno FROM Course
WHERE Cname=?C 语言程序设计?) and Grade=(SELECT MAX(Grade)
FROM SC
WHERE Cno=(SELECT Cno FROM Course
WHERE Cname=?C语言程序设计?)))
and Sdept=?计算机?
习题5
1、 理解并给出下列术语的定义:
1)设R(U)是一个属性集U上的关系模式,X和Y是U的子集。若对于R(U)的任意一个可能的关系r,r中不可能存在两个元组在X上的属性值相等,而在Y上的属性值不等,则称 X函数确定Y 或 Y函数依赖于X,记作X→Y。
2) 完全函数依赖 在R(U)中,如果X→Y,并且对于X的任何一个真子集X?,都有Y不函数依赖于X?,则称Y对X完全函数依赖,记作X???Y 3) 部分函数依赖
若X→Y,但Y不完全函数依赖于X,则称Y对X部分函数依赖,记作X???Y 4) 传递函数依赖
在R(U)中,如果X→Y,(Y ?X) , Y→X,Y→Z,则称Z对X传递函数依赖。 记为:X???Z
注: 如果Y→X,即X←→Y,则Z直接依赖于X。 5)候选码
设K为R(U,F)的属性或属性组合。若K?U,则K称为R的侯选码。
6)主码:若候选码多于一个,则选定其中的一个作为主码。
7)外码:关系模式R 中属性或属性组X 并非R的码,但X 是另一个关系模式的码,则称X 是R 的外部码(Foreign key)也称外码
8)如果一个关系模式R的所有属性都是不可分的基本数据项,则R∈1NF. 9)若R∈1NF,且每一个非主属性完全函数依赖于码,则R∈2NF。
10)如果R(U,F )∈2NF,并且所有非主属性都不传递依赖于主码,则R(U,F )∈3NF。 11)关系模式R(U,F)∈1NF,若X→Y且Y ? X时X必含有码,则R(U,F)∈BCNF。
12)关系模式R∈1NF,如果对于R的每个非平凡多值依赖X→→Y(Y? X),X都含有码,则R∈4NF。
2、 关系规范化的操作异常有哪些? 1) 数据冗余大 2) 插入异常 3) 删除异常 4) 更新异常
3、 第一范式、第二范式和第三范式关系的关系是什么?
4、 已知关系模式R(A,B,C,D,E)及其上的函数依赖集合F={A->D,B->C,E-> A},该关系
模式的候选码是什么? 候选码为:(E,B)
5、 已知学生表(学号,姓名,性别,年龄,系编号,系名称),存在的函数依赖集合
是{学号->姓名,学号->性别,学号->年龄,学号->系编号,系编号->系名称},判断其满足第几范式。
各个属性不可再分,因此满足1NF。 候选码为:学号 主属性为:学号
码是单个属性构成的,因此,非主属性与码之间是完全函数依赖,满足2NF。
FFpT因为:学号->系编号,系编号->系名称,存在传递函数依赖,所以不满足3NF。 该关系模式满足第二范式。
6、 已知关系模式R(D,E,G),存在函数依赖关系{E->D,(D,G)->E},请分析该关系模
式的候选码和满足第几范式。 候选码为:(D,G)和(E,G) 主属性:D,E,G
不存在部分依赖和传递依赖,所以满足3NF。 因为:E->D,不满足BCNF。 因此该关系模式满足第三范式。
7、 已知关系模式R(A,B,C,D),存在函数依赖关系{A->B,A->C,A->D,(B,C)->A},请分
析该关系模式满足第几范式。 候选码为:A和(B,C) 主属性:A,B,C
A->D,(B,C)->A,但是 A->(B,C),因此不存在传递函数依赖,满足3NF。
A->B,A->C,A->D,(B,C)->A,满足BCNF条件,所以该关系模式满足BCNF。
8、 设有关系模式:学生(学号,姓名,所在系,班级号,辅导员,系主任),其语义
为:一个学生只能在一个系的一个班级学习,一个系只有一个正职的系主任,一个班只有一个辅导员管理,一个系可以有多个班级。请指出这个关系模式是否满足第三范式。若不满足第三范式,如何进行分解使其满足第三范式。 所有属性均不可再分,满足1NF。 候选码为:学号 主属性:学号
候选码为单个属性,所以不存在部分函数依赖,满足2NF
学号->所在系,所在系->系主任,存在传递函数依赖学号->系主任,
学号->班级,班级->辅导员,存在传递函数依赖学号->辅导员,因此不满足3NF。 将该关系模式分解为:
学生(学号,姓名,所在系,班级号) 班级(班级号,辅导员) 系部(所在系,系主任)
习题6
1、说明数据库设计的特点。
1)三分技术,七分管理,十二分基础数据 2)综合性
3)结构(数据)设计和行为(处理)设计相结合
2、试述数据库设计的过程