8、设有关系R 、S(如下表所示),计算:
R S
A B C C D E
3 6 7 3
4 5
4 5 7 6 2 3
6 2 3
5 4
3 (1) R1 =R S (2) R2=R S (3) R3 = B=D (R ×S)
解:
(1)
A B C D E
6 2 3 4 5
5 4 3 4 5
(2) A B R.C S.C D E
6 2 3 3 4 5
(3) A B R.C S.C D E
6 2 3 3 4 5
5 4 3 3 4 5
关系代数写出查询
10、设有学生-课程关系数据库,它由三个关系组成,它们的模式是:学生S (学号SNO ,姓名SN ,所在系DEPT ,年龄AGE )、课程C (课程号CNO ,课程名CN ,先修课号CPNO )、SC (学号SNO ,课程号CNO ,成绩SCORE )。
请用关系代数与ALPHA 语言分别写出下列查询:
(1) 检索学生的所有情况。
(2) 检索学生年龄大于等于20岁的学生姓名。
(3) 检索先修课号为C2的课程号。
(4) 检索选修了课程号C1成绩为A 的所有学生姓名。
(5) 检索学号为S1的学生修读的所有课程名及先修课号。
(6) 检索年龄为23岁的学生所修读的课程名。
(7) 检索至少修读了学号为S5的学生修读的一门课的学生的姓名。
(8) 检索修读了学号为S4的学生所修读的所有课程的学生的姓名。
(9) 检索选修所有课程的学生的学号。
(10) 检索不选修任何课程的学生的学号。
解:
写出关系代数表达方式:
(1) 检索学生的所有情况。
S 或 S SC C
(2) 检索学生年龄大于等于20岁的学生姓名。
πSN (σAGE>=20(S))
2<2
(3) 检索先修课号为C2的课程号。
πCNO(σCPNO=’C2’(C))
(4) 检索选修了课程号C1成绩为A的所有学生姓名。
πSN(σCNO=’C1’∧SCORE=’A’(SC S))
(5) 检索学号为S1的学生修读的所有课程名及先修课号。
πCN,CPNO (σSNO=’S1’(SC C))
(6) 检索年龄为23岁的学生所修读的课程名。
πCN (σAGE=23(S SC C))
(7) 检索至少修读了学号为S5的学生修读的一门课的学生的姓名。
πSN (S SCπCNO (σSNO=’S5’(SC)))
(8) 检索修读了学号为S4的学生所修读的所有课程的学生的姓名。
πSN (S(πSNO,CNO (SC)÷πCNO (σSNO=’S4’(SC))))
(9) 检索选修所有课程的学生的学号。
πSNO,CNO (SC)÷πCNO (C)
(10) 检索不选修任何课程的学生的学号。
πSNO (S) -πSNO (SC)
9、对于简易教学管理数据库有如下3个基本表:S(SNO,SN,AGE,SEX)、SC(SNO,CNO,SCORE)、C(CNO,CN,TH),其含义为SNO(学号),SN(姓名),AGE(年龄),SEX(性别),SCORE(成绩),CNO(课程号),CN(课程名),TH(教师名)。试用SQL语言表达如下查询及操作:
(1)检索年龄大于16岁的女学生的学号和姓名。
SELECT SNO,SN
FROM S
WHERE AGE>16 AND SEX='女';
(2)检索姓刘的学生选修的所有课程名与教师名。
方法一(联接查询方式):
SELECT CN,TH
FROM S,SC,C
WHERE S.SNO=SC.SNO AND https://www.wendangku.net/doc/3e4209222.html,O=https://www.wendangku.net/doc/3e4209222.html,O AND SN like '刘%';
方法二(嵌套查询方式):
SELECT CN,TH
FROM C
WHERE CNO IN
(SELECT CNO
FROM SC
WHERE SNO IN
(SELECT SNO
FROM S
WHERE SN like '刘%'));
(3)检索没有选修数据库课程的学生的学号与姓名。
SELECT SNO,SN
FROM S
WHERE SNO NOT IN
(SELECT SNO
FROM S
WHERE SNO IN
(SELECT SNO
FROM SC
WHERE CNO IN
(SELECT CNO
FROM C
WHERE CN='数据库')));
或
SELECT SNO,SN
FROM S
WHERE SNO NOT IN
(SELECT SNO FROM S,SC,C WHERE S.SNO=SC.SNO AND https://www.wendangku.net/doc/3e4209222.html,O=https://www.wendangku.net/doc/3e4209222.html,O AND CN='数据库');
(4)检索至少选修两门课程的学生的学号与姓名。
方法一:SELECT DISTINCT X.SNO
FROM SC X
WHERE SNO IN
(SELECT SNO
FROM SC Y
WHERE X.SNO=Y.SNO AND https://www.wendangku.net/doc/3e4209222.html,O<>https://www.wendangku.net/doc/3e4209222.html,O);
方法二:SELECT DISTINCT X.SNO
FROM SC X,SC Y
WHERE X.SNO=Y.SNO AND https://www.wendangku.net/doc/3e4209222.html,O<>https://www.wendangku.net/doc/3e4209222.html,O);
方法三:SELECT SNO
FROM SC
GROUP BY SNO HAVING COUNT(*)>=2;
(5)检索选修课程包含姓张老师所授全部课程的学生的学号与姓名。
SELECT DISTINCT SX.SNO,SN
FROM SC X,S SX
WHERE NOT EXISTS
(SELECT *
FROM C
WHERE TH LIKE '张%'
AND NOT EXISTS
(SELECT *
FROM SC Y
WHERE X.SNO=Y.SNO AND https://www.wendangku.net/doc/3e4209222.html,O=https://www.wendangku.net/doc/3e4209222.html,O)) AND X.SNO=SX.SNO ; 或
SELECT DISTINCT X.SNO,X.SN
FROM S X
WHERE NOT EXISTS
(SELECT *
FROM C
WHERE TH LIKE '张%' AND NOT EXISTS
(SELECT *
FROM SC Y
WHERE X.SNO=Y.SNO AND https://www.wendangku.net/doc/3e4209222.html,O=https://www.wendangku.net/doc/3e4209222.html,O));
(6)把王非同学的学生信息及其选课情况等全部删除。
DELETE FROM SC
WHERE SNO =
(SELECT SNO
FROM S
WHERE SN='王非');
DELETE FROM S WHERE SN='王非';
(7)在课程表中添加一门新课程,其信息为:('C8','信息系统概论','孙力')。
INSERT INTO C VALUES('C8','信息系统概论','孙力')
(8)在选修关系表SC中添加所有学生对'C8'课程的选修关系记录,成绩暂定为60,请用一条命令完成本批量添加任务。
INSERT INTO SC(SNO,CNO,SCORE) SELECT SNO,'C8',60 FROM S
(9)把选“信息系统概论”课程的男学生的成绩暂全部初始化重新设置为0。
UPDATE SC
SET SCORE=0
WHERE CNO='C8' AND SNO IN
(SELECT SNO
FROM S
WHERE SEX= '男')
或
UPDATE SC
SET SCORE=0
WHERE CNO='C8' AND '男'=
(SELECT SEX
FROM S
WHERE SNO=SC.SNO)
或
-- 最好为如下表示
UPDATE SC
SET SCORE=0
WHERE SNO IN
(SELECT SNO
FROM S
WHERE SEX= '男') AND CNO IN
(SELECT CNO
FROM C
WHERE CN= '数据库')
或
UPDATE SC
SET SCORE=0
WHERE '男'=
(SELECT SEX
FROM S
WHERE SNO=SC.SNO) AND '数据库'=
(SELECT CN
FROM C
WHERE CNO=https://www.wendangku.net/doc/3e4209222.html,O)
求候选关键字(候选码)
6、设有关系模式R(A,B,C,D,E,F),函数依赖集F={(A,B)→E,(A,C)→F,(A,D)→B,B→C,C→D},求出R的所有候选关键字。
解:
具体:
经分析候选码中必含有A属性,要分别考察(A,B)、(A,C)、(A,D)、(A,E)、(A,F),先考察(A,B)
∵(A,B)→B,B→C, ∴(A,B) →C ①
∵(A,B)→A, (A,B)→C, ∴(A,B) →(A,C) 又∵(A,C)→F ∴(A,B) →F ②∵(A,B)→C, C→D, ∴(A,B) →D ③
已知(A,B)→E ④
并显然有 (A,B)→(A,B) ⑤
由①②③④⑤得,(A,B)→(A,B,C,D,E,F) ,∴(A,B)为候选码。
∵(A,C)→C, C→D ∴(A,C) →D
∵(A,C)→A, (A,C) →D ∴(A,C) →(A,D)
∵(A,C)→(A,D), (A,D)→B ∴(A,C) →B
∵(A,C)→A, (A,C) →B ∴(A,C) →(A,B)
∵(A,B)→(A,B,C,D,E,F) ∴(A,C) →(A,B,C,D,E,F) ,∴(A,C)为候选码。
∵(A,D)→A, (A,D)→B ∴(A,D) →(A,B)
∵(A,B)→(A,B,C,D,E,F) ∴(A,D) →(A,B,C,D,E,F) ,∴(A,D)为候选码。
显然(A,E)、(A,F)不能函数决定(A,B,C,D,E,F)
∴候选码有(A,B)、(A,C)、(A,D)
8、设有关系模式R(A,B,C,D,E,F),函数依赖集F={A→(B,C),(B,C)→A,(B,C,D)→(E,F),E→C}。试问:关系模式R是否为BCNF范式,并证明结论。解:
R达不到BCNF范式。R的候选关键字有:(A,D)、(B,C,D)、(B,E,D)
按BCNF定义判定即可,具体略。
具体:
经分析候选码中必含有D属性,要分别考察(A,D)、(B,D)、(C,D)、(E,D)、(F,D),先考察(A,D)
∵(A,D)→A,A→(B,C), ∴(A,D) →(B,C)
∵(A,D)→D, ∴(A,D) →(B,C,D) ①
∵(B,C,D)→(E,F), ∴(A,D) →(E,F) ②
∵(A,D)→(A,D) ③
由①②③得,(A,D)→(A,B,C,D,E,F) ,∴(A,D)为候选码。
经分析显然(B,D)、(C,D)、(E,D)、(F,D)不能函数决定(A,B,C,D,E,F)
∴两属性组合的候选码有 (A,D)
下面要考察含D的三个属性组合看是否能完全函数决定(A,B,C,D,E,F),
它们是(B,C,D)、(B,E,D)、(B,F,D)、(C,E,D) 、(C,F,D) 、(E,F,D) 考察(B,C,D)
∵(B,C,D)→(B,C,D), (B,C,D)→(E,F) ∴(B,C,D) →(E,F) ①
∵(B,C,D)→(B,C), (B,C)→A ∴(B,C,D) →A ②
∵(B,C,D)→(B,C,D) ③
由①②③得,(B,C,D)→(A,B,C,D,E,F) ,∴(B,C,D)为候选码。
考察(B,E,D)
∵(B,E,D)→E, E→C ∴(B,E,D) →C ①
∵(B,E,D)→(B,D) ②
由①②得,(B,E,D)→(B,C,D)
∵(B,C,D)→(A,B,C,D,E,F)
∴(B,E,D)→(A,B,C,D,E,F) ,∴(B,E,D)为候选码。
显然(B,F,D)、(C,E,D)、(C,F,D)、(E,F,D)不能函数决定(A,B,C,D,E,F) ∴候选码有(A,D)、(B,C,D)、(B,E,D)
10、试问下列关系模式最高属于第几范式,并解释其原因。
(1)R(A,B,C,D),F={B→D,AB→C}。
(2)R(A,B,C,D,E),F={AB→CE,E→AB,C→D}。
(3)R(A,B,C,D),F={B→D,D→B,AB→C}。
(4)R(A,B,C),F={A→B,B→A,A→C}。
(5)R(A,B,C),F={ A→B,B→A,C→A }。
(6)R(A,B,C,D),F={A→C,D→B}。
(7)R(A,B,C,D),F={A→C,CD→B}。
解:
只依次写出候选关键字与范式等级(范式按定义判定,具体略)
(1)AB 1NF
(2)AB,E 2NF
(3)AB,AD 3NF
(4)A,B BCNF
(5)C 2NF
(6)AD 1NF
(7)AD 1NF
具体解答为:
(1)R(A,B,C,D),F={B→D,AB→C}。
经分析候选码中必含有AB属性,考察AB
∵AB→B,B→D, ∴AB→D ①
∵AB→AB ②
已知AB→C ③
由①②③得,AB→ABCD ,∴AB为候选码。
候选码就只有AB
显然,A、B为主属性,C、D为非主属性。
对非主属性D来说,∵有B→D, ∴AB→D 为部分函数依赖,∴R不属于2NF ∴R最高属于1NF
(2)R(A,B,C,D,E),F={AB→CE,E→AB,C→D}。
经分析所有属性均出现在被决定因素位置,则从考察各决定因素出发来找寻候
选码。
先考察AB
∵AB→CE,CE→C, ∴AB→C ①
∵AB→C, C→D, ∴AB→D ②
∵AB→AB ③
已知AB→CE ④
由①②③④得,AB→ABCDE ,∴AB为候选码。
再考察E
∵E→AB,AB→ABCDE, ∴E→ABCDE ,∴E为候选码。
再考察C
显然C不能决定所有属性。
∴候选码就有AB、E两个。
显然,A、B、E为主属性,C、D为非主属性。
非主属性C、D对候选码AB、E来说均为完全函数决定,∴R达到2NF
但因为有AB→C, C→D, ∴AB→D为传递函数依赖,
∴R不属于3NF
∴R最高属于2NF
(3)R(A,B,C,D),F={B→D,D→B,AB→C}。
经分析候选码中必含有A属性,要考察AB,AC,AD
先考察AB
∵AB→B,B→D, ∴AB→D ①
∵AB→AB ②
已知AB→C ③
由①②③得,AB→ABCD ,∴AB为候选码。
再考察AD
∵AD→D,D→B, ∴AD→B ∵AD→A ∴AD→AB
∵AB→ABCD ,∴AD→ABCD
∴AD为候选码。
显然,AC不能决定所有属性。
∴候选码就有AB、AD两个。
显然,A、B、D为主属性,C为非主属性。
对非主属性C来说,对候选码AB、AD均为完全并为直接函数依赖
∴R属于3NF
但因为有B→D或D→B,而B或D不为候选码
∴R不属于BCNF
∴R最高属于3NF
(4)R(A,B,C),F={A→B,B→A,A→C}。
经分析所有属性均出现在被决定因素位置,则从考察各决定因素出发来找寻候选码。
先考察A
∵A→B,A→C, A→A, ∴A→ABC ∴A为候选码。
∵B→A ,A→C ∴B→C
∵B→A,B→B, ∴B→ABC ∴B为候选码。
候选码就只有A或B两个
显然,A、B为主属性,C为非主属性。
对F中的每个函数依赖考察,可知其每个函数依赖的决定因素均为候选码,∴根据定义R属于BCNF
(5)R(A,B,C),F={ A→B,B→A,C→A }。
经分析候选码中必含有C属性,考察C
∵C→A,A→B, ∴C→B ①
∵C→A ②
C→C ③
由①②③得,C→ABC ,∴C为候选码。
候选码只有C
显然,C为主属性,A、B为非主属性。
非主属性A、B对C均为完全函数依赖,∴R属于2NF
但∵有C→A, A→B,∴C→B为传递函数依赖,∴R不属于3NF
∴R最高属于2NF
(6)R(A,B,C,D),F={A→C,D→B}。
经分析候选码中必含有AD属性,考察AD
∵A→C,D→B, ∴AD→BC ①
∵AD→AD ②
由①②得,AD→ABCD ,∴AD为候选码。
候选码就只有AD
显然,A、D为主属性,B、C为非主属性。
对非主属性B来说,∵有D→B, ∴AD→B 为部分函数依赖,∴R不属于2NF ∴R最高属于1NF
(7)R(A,B,C,D),F={A→C,CD→B}。
经分析候选码中必含有AD属性,考察AD
∵AD→A,A→C, ∴AD→C
∵AD→D, AD→C ∴AD→CD ①
已知CD→B ∴AD→B ②
∵AD→AD ③
由①②③得,AD→ABCD ,∴AD为候选码。
候选码就只有AD
显然,A、D为主属性,B、C为非主属性。
对非主属性C来说,∵有A→C, ∴AD→C 为部分函数依赖,∴R不属于2NF ∴R最高属于1NF
一、选择题
1、对用户访问数据库的权限加以限定是为了保护数据库的( )。
A.安全性B.完整性C.一致性D.并发性
2、数据库的( )是指数据的正确性和相容性。
A.完整性B.安全性C.并发控制D.系统恢复
3、在数据库系统中,定义用户可以对哪些数据对象进行何种操作被称为( )。
A.审计B.授权C.定义D.视图
4、脏数据是指( )。
A.不健康的数据B.缺损的数据C.多余的数据
D.被撤消的事务曾写入库中的数据
5、设对并发事务T1、T2的交叉并行执行如下,执行过程中( )。
Tl T2
①READ(A)
②READ(A)
A=A+10写回
③READ(A)
A.有丢失修改问题B.有不能重复读问题
C.有读脏数据问题D.没有任何问题
6、若事务T1已经给数据A加了共享锁,则事务T2( )。
A.只能再对A加共享锁B.只能再对A加排它锁
C.可以对A加共享锁,也可以对A加排它锁D.不能再给A加任何锁
7、用于数据库恢复的重要文件是( )。
A.日志文件
B.索引文件
C.数据库文件
D.备注文件
8、若事务T1已经给数据对象A加了排它锁,则T1对A( )。
A.只读不写B.只写不读C.可读可写D.可以修改,但不能删除
9、数据库恢复的基本原理是( )。
A.冗余B.审计C.授权D.视图
10、数据备份可只复制自上次备份以来更新过的数据,这种备份方法称为( )。
A.海量备份B.增量备份C.动态备份D.静态备份
二、填空题
1、对数据库的保护一般包括__安全性__、_完整性_、_并发控制_和_数据恢复_四个方面的内容。
2、对数据库_安全_性的保护就是指要采取措施,防止库中数据被非法访问、修改,甚至恶意破坏。
3、安全性控制的一般方法有_用户标识和鉴别__、_用户存取权限控制_、_视图机制_、_数据加密_和__审计_五种。
4、用户鉴定机制包括_用户标识定义_和_用户身份验证__两个部分。
5、每个数据均需指明其数据类型和取值范围,这是数据_完整性_约束所必需的。
6、在SQL中,_COMMIT_语句用于提交事务,_ROLLBACK_语句用于回滚事务。
7、加锁对象的大小被称为加锁的_粒度_。
8、对死锁的处理主要有两类方法,一是_预防死锁的发生__,二是_检测死锁发现后予以消除死锁_。
9、解除死锁最常用的方法是_撤消一些陷入死锁的事务__。
10、基于日志的恢复方法需要使用两种冗余数据,即_后备数据库__和_日志文件_。
一、选择题
1、下列对数据库应用系统设计的说法中正确的是( )。
A.必须先完成数据库的设计,才能开始对数据处理的设计
B.应用系统用户不必参与设计过程
C.应用程序员可以不必参与数据库的概念结构设计D.以上都不对
2、在需求分析阶段,常用( )描述用户单位的业务流程。
A.数据流图B.E-R图C.程序流图D.判定表
3、下列对E-R图设计的说法中错误的是( )。
A .设计局部E-R 图中,能作为属性处理的客观事物应尽量作为属性处理
B .局部E-R 图中的属性均应为原子属性,即不能再细分为子属性的组合
C .对局部E-R 图集成时既可以一次实现全部集成,也可以两两集成,逐步进行
D .集成后所得的E-R 图中可能存在冗余数据和冗余联系,应予以全部清除
4、下列属于逻辑结构设计阶段任务的是( )。
A .生成数据字典
B .集成局部E-R 图
C .将E-R 图转换为一组关系模式
D .确定数据存取方法
5、将一个一对多联系型转换为一个独立关系模式时,应取( )为关键字。
A .一端实体型的关键属性
B .多端实体型的关键属性
C .两个实体型的关键属性的组合
D .联系型的全体属性
6、将一个M 对N (M>N )的联系型转换成关系模式时,应( )。
A .转换为一个独立的关系模式
B .与M 端的实体型所对应的关系模式合并
C .与N 端的实体型所对应的关系模式合并
D .以上都可以
7、在从E-R 图到关系模式的转化过程中,下列说法错误的是( )。
A .一个一对一的联系型可以转换为一个独立的关系模式
B .一个涉及三个以上实体的多元联系也可以转换为一个独立的关系模式
C .对关系模型优化时有些模式可能要进一步分解,有些模式可能要合并
D .关系模式的规范化程度越高,查询的效率就越高
8、对数据库的物理设计优劣评价的重点是( )。
A .时空效率
B .动态和静态性能
C .用户界面的友好性
D .成本和效益
9、下列不属于数据库物理结构设计阶段任务的是( )。
A .确定选用的DBMS
B .确定数据的存放位置
C .确定数据的存取方法
D .初步确定系统配置
10、确定数据的存储结构和存取方法时,下列策略中( )不利于提高查询效率。
A .使用索引
B .建立聚簇
C .将表和索引存储在同一磁盘上
D .将存取频率高的数据与存取频率低的数据存储在不同磁盘上
二、填空题
1、在设计分E-R 图时,由于各个子系统分别面向不同的应用,所以各个分E-R 图之间难免存在冲突,这些冲突主要包括_命名冲突_、_属性冲突_和_结构冲突_三类。
2、数据字典中的_数据项_是不可再分的数据单位。
3、若在两个局部E-R 图中都有实体“零件”的“重量”属性,而所用重量单位分别为公斤和克,则称这两个E-R 图存在_属性_冲突。
4、设有E-R 图如图6.18,其中实体“学生”的关键属性是“学号”,实体“课程”的关键属性是“课程编码”,设将其中联系“选修”转换为关系模式R ,则R 的关键字应为属性集_学号与课程编码__。
学生 学号 姓名 年龄
性别 选修 成绩 课程 m n 课程名 学分
课程编码
图6.18 E-R 图
5、确定数据库的物理结构主要包括三方面内容,即:_确定数据存放位置和存储结构_、_确定数据存取方法_和_系统配置_。
6、将关系R 中在属性A 上具有相同值的元组集中存放在连续的物理块上,称为对关系R 基于属性A 进行_聚簇_。
7、数据库设计的重要特点之一要把_结构(数据)_设计和__行为(处理)_设计密切结合起来,并以_结构(数据)_为核心而展开。
8、数据库设计一般分为如下六个阶段:需求分析、__概念结构设计__、__逻辑结构设计__、数据库物理设计、数据库实施、数据库运行与维护。
9、概念设计的结果是得到一个与__计算机与DBMS__无关的模型。
10、在数据库设计中,__数据字典__是系统各类数据的描述的集合。
外模式,模式,内模式
期末考试题型
填空题(1分X 10 = 10分)
单项选择题(2分X 10 = 20分)
SQL
视图1 基本表2 视图2 基本表3 基本表4 基本表1 存储文件1 存储文件2 外模式 模式 内模式
综合应用题(35分)
包括4个小题:求关系模式的候选关键字、判断关系模式的级别、处理事
务并发操作、数据库设计(E-R图、转换为关系模式、主码
和外码)
关系数据库操作题(35分)
包括:关系代数题目(8-9分)传统和专门的关系运算
SQL语句题目(26-27分)建表、建视图、查询(难度比实验题目难度稍小)、添加数据、删除数据、更新数据等基本操作语句
答疑时间15周周一下午1:00 – 2:30
15周周三上午10:00 – 11:30
答疑地点第一学科楼C216 (老师办公室)
考试时间15周周三56节
考试地点请上网查询
注意事项:闭卷考试;
考试时请带好学生证或考试证。