第一章习题2、6、10
2、使用数据库系统有什么好处?
数据库是长期存储在计算机内有组织、大量、共享的数据集合,它可以供各种用户共享,具有最小冗余度和较高的 数据独立性。数据库管理系统在数据库建立、运用和维护时对数据库进行统一控制,以保证数据的完整性和安全性,并在多用户同时使用数据库时进行并发控制,在发生故障后后对数据库进行恢复。数据库系统的出现使信息系统从以加工数据的程序为中心转向围绕共享的数据库为中心的新阶段。这样急便于数据的几种管理,又能简化应用程序的研制和维护,提高了数据的利用率和相容性,提高了决策的可靠性。 6、数据库管理系统的主要功能有那些? ①数据定义功能 ②数据组织、存储和管理 ③数据操纵功能
④数据库的事物管理和运行管理 ⑤数据库的建立和维护功能
⑥其他功能,包括数据库管理系统与网络中其他软件系统的通信功能,一个数据库管理系统与另一个数据库管理系统或文件系统的数据
转换功能,异构数据库之间的互访和互操作功能等 10、试述层次模型的概念,举出三个层次模型的实例
在数据库中定义满足下面两个条件的基本层次联系的集合为层次模型:
② 且只有一个节点没有双亲节点,这个节点称为根节点; ②根以外的其他节点有且只有一个双亲节点 三层实例: 科研室编号 科研室名 系编号 系名 办公地点 学号 姓名 成绩 职工号 姓名
研究第二章习题5、6
5、试述关系模型的完整性规则 。在参照完整性中,什么情况下外码属性的值可以为空值?
关系模型的完整性规则:①实体完整性②参照完整性③用户定义的完整性
若属性F是基本关系R的外码,它与基本关系S的主码K相对应,则对于R中每个元祖在F上的值只能等于S,或者取空值(F的每个属性值均为空值)
6.设有一个spj数据库,包括S,P,J及SPJ4个关系模式: 关系代数:
SNO(JNO'J1'(SPJ))
ALPHA语言:GET W(SPJ.SNO):SPJ.JNO=’J1’ QBE语言:
SPJ
SNO P.S1 PNO JNO J1 QTY (2)
关系代数:
QBE语言: SPJ
SNO(JNO'J1'PNO'P1'(SPJ))
ALPHA语言:GET W(SPJ.SNO):SPJ.JNO=’J1’∧SPJ.PNO=’P1’
SNO P.S1 PNO P1 JNO J1 QTY (3) 关系代数:
SNO(SNO,PNO(JNO'J1'(SPJ))PNO(COLOR'红'(P)))
注:是连在一起的,表示连接 ALPHA语言:
RANGE P PXGET W(SPJ.SNO):PX(PX.PNOSPJ.PNOSPJ.JNO'J1'PX.COLOR'红')QBE语言: SPJ SNO PNO JNO QTY P (4) 关系代数:
P.S1 P1 J1 PNO P1 PNAME COLOR 红 WEIGHT JNO(J)JNO(SNO(CITY'天津'(S))SNO,PNO,JNO(SPJ)PNO(COLOR'红'(P))) ALPHA语言:
RANGE SPJ SPJX P PX S SX GET W(J.JNO):SPJX(SPJX.JNOJ.JNO SX(SX.SNOSPJX.SNOSX.CITY'天津') PX(PX.PNOSPJX.PNOPX.COLOR'红'))
QBE语言: S P
PNO P1 PNAME COLOR 红 WEIGHT SNO S1 SNAME STATUS CITY 天津 SPJ SNO S1 PNO P1 JNO P.J1 QTY (5) 关系代数:
JNO,PNO(SPJ)PNO(SNO'S1'(SPJ))
ALPHA语言:
RANGE SPJ SPJX SPJ SPJY P PX GET W(J.JNO):PX(SPJX(SPJX.PNOPX.PNOSPJX.SNO'S1') SPJY(SPJY.JNOJ.JNOSPJY.PNOPX.PNO))
第三章习题4、5、9
4、用SQL语句建立第二章习题6中得4个表:针对建立的4个表用SQL完成第2章习题6中的查询。 a.建立四个表:
建立S表:S(SNO,SNAME,STATUS,CITY) CREATE TABLE S
(SNO CHAR(3), SNAME CHAR(10), STATUS CHAR(2), CITY CHAR(10));
建立P表:P(PNO,PNAME,COLOR,WEIGHT0 CREATE TABLE P (PNO CHAR(3), PNAME CHAR(10), COLOR CHAR(4), WEIGHT INT);
建立J表:J ( JNO , JNAME , CITY); CREATE TABLE J (JNO CHAR (3), JNAME CHAR (10), CITY CHAR (10));
建立 SPJ 表: SPJ ( SNO , PNO , JNO , QTYCREATE TABLE SPJ (SNO CHAR (3), PNO CHAR (3), JNO CHAR (3), QTY INT)); b.查询:
); (1)求供应工程J1 零件的供应商号码 SNO SELECT DISTINCT SNO FROM SPJ WHERE JNO='J1'
(2)求供应工程J1零件 Pl 的供应商号码 SNO SELECT DISTINCT SNO FROM SPJ
WHERE JNO='J1' AND PNO='P1'
(3)求供应工程 J1零件为红色的供应商号码 SNO SELECT DISTINCT SNO FROM SPJ, P
WHERE JNO='J1' AND SPJ.PNO=P.PNO AND COLOR='红'
(4)求没有使用天津供应商生产的红色零件的工程号 JNO; SELECT JNO FROM J
WHERE NOT EXISTS (SELECT * FROM SPJ
WHERE SPJ.JNO=J.JNO AND SNO IN (SELECT SNO
FROM S
WHERE CITY=’天津’) AND PNO IN (SELECT PNO FROM P
WHERE COLOR=’红’));
(5)求至少用了供应商 Sl 所供应的全部零件的工程号 JNO SELECT DISTINCT JNO FROM SPJ SPJZ WHERE NOT EXISTS (SELECT * FROM SPJ SPJX WHERE SNO=’J1’ AND NOT EXISTS (SELECT * FROM SPJ SPJY
WHERE SPJY.PNO=SPJX.PNO AND SPJY.JNO=SPJZ.JNO)); 5、答: (1)
SELECT SNAME, CITY
FROM S; (2)
SELECT PNAME, COLOR, WEIGHT FROM P; (3)
SELECT JNO FROM SPJ
WHERE SNO=’S1’; (4)
SELECT P.PNAME, SPJ.QTY FROM P,SPJ
WHERE P.PNO=SPJ.PNO AND SPJ.JNO=’J2’;(5)
SELECT DISTINCT PNO FROM SPJ WHERE SNO IN (SELECT SNO FROM S
WHERE CITY=’上海’); (6)
SELECT JNAME FROM J,SPJ,S
WHERE J.JNO=SPJ.JNO AND SPJ.SNO=S.SNO AND S.CITY=’上海’; (7) SELECT JNO FROM J
WHERE NOT EXISITS (SELECT * FROM SPJ, S
WHERE J.JNO=SPJ.JNO AND SPJ.SNO=S.SNO AND S.CITY=’天津);; (8) UPDATE P
SET COLOR=’蓝’ WHERE CLOOR=’红’; (9) UPDATE SPJ SET SNO=’S3’ WHERE SNO=’S5’ AND JNO=’J4’ AND PNO=’P6’;
(10) DELETE FROM SPJ WHERE SNO=’S2’; DELETE FROM S
WHERE SNO=’S2’; (11)
INSERT INTO SPJ(SNO,JNO,PNO,QTY) VALUES(S2,J6,P4,200); 9、答:
CREATE VIEW V_SPJ AS SELECT SNO,PNO,QTY FROM SPJ WHERE JNO= (SELECT JNO FROM J
WHERE JNAME=’三建’); (1)SELECT PNO,QTY FROM V_SPJ;
(2) SELECT PNO,QTY FROM V_SPJ WHERE SNO=’S1’;
第四章习题3、7、8、10
3、答:(1)信息安全标准的发展历史,如下图:
1993年加拿大可信计算机产品 评估准则 (CTCPEC) 1985年美国国防部可信计算机系统评估准则(TCSEC) 1991年欧洲信息技术安全评估准则(ITSEC) 通用准则 (CC) V1.0 1996年 V2.0 1998年 V2.1 1999年 1999年CC V2.1 成为国际标准 (ISO 15408) 1993年 美国信息技术 安全联邦标准(FC)草案 TCSEC是1985年美国国防部正式颁布的《DoD可信计算机系统评估准则》。CC通用准则V2.1版于1999年被ISO纳为国际标准,2001年我国采用其为国家标准。
目前CC已经基本取代了TCSEC,成为评估信息产品安全性的主要标准。
TCSEC/TDI标准将TCSEC扩展到数据库管理系统,TCSEC/TDI中定义
了数据库管理系统的设计与实现中需满足和用以进行安全性级别评估的标准,从安全策略、责任、保证和文档4各方面来描述安全性级别划分的标准。
CC提出了目前国际上公认的表述信息技术安全性的结构,即把对信息产品的安全要求分为安全功能要求和安全保证要求。安全功能要求用以规范产品和系统的安全行为,安全保证要求解决如何正确有效地实施这些功能。
(2)CC 评估保证级划分如下:
7、答: (1)
GRAINT SELECT ON职工,部门 TO 王明; (2)
GRAINT INSERT,DELETE ON职工,部门 TO 李勇; (3)
GRAINT SELECT ON职工
WHEN USER()=NAME TO ALL; (4)
GRAINT SELECT,UPDATE(工资) ON职工 TO 刘星; (5)
GRAINT ALTER TABLE ON职工,部门
TO 张新; (6)
GRAINT ALL PRIVILIGES ON职工,部门 TO 周平
WITH GRANT OPTION; (7)
CREATE VIEW 部门工资 AS
SELECT 部门.名称,MAX(工资),MIN(工资),AVG(工资) FROM 职工,部门
WHERE 职工.部门号=职工.部门号 GROUP BY职工.部门号
GRAINT SELECT ON部门工资 TO 杨兰 8、答: (1)
REVOKE SELECT ON职工,部门 FROM 王明; (2)
REVOKE INSERT,DELETE ON职工,部门 FROM 李勇; (3)
REVOKE SELECT ON职工
WHEN USER()=NAME FROM ALL; (4)
REVOKE SELECT,UPDATE(工资) ON职工 FROM 刘星; (5)
REVOKE ALTER TABLE
ON职工,部门 FROM 张新; (6)
REVOKE ALL PRIVILIGES ON职工,部门 FROM 周平; (7)
REVOKE SELECT ON部门工资 FROM 杨兰; DROP VIEW 部门工资
10、答:因为强制存取控制是对数据本身进行密级标记,无论数据如何复制,标记与数据是一个不可分的整体,只有符合密级标记要求的用户才可以操纵数据,从而提供了更高级别的安全性。
第五章习题2、5、6、7
2、答:数据的完整性和安全性是两个既有联系又不尽相同的概念。数据的完整性是为了防止数据库中存在不符合语义的数据,也就是防止数据库中存在不正确的数据。数据的安全性是保护数据库防止恶意
破坏和非法存取。安全性控制的防范对象是非法用户和非法操作,防止他们对数据库数据的非法存取。
5、答:关系数据库管理系统在实现参照完整性时需要考虑可能破坏参照完整性的各种情况,以及违约后的处理策略。
下表总结了可能破坏参照完整性的4种情况及可采取的违约策略: 4种情况分别是指:在参照关系中插入元组、修改外码值时可能破坏参照完整性,在删除被参照表的元组、修改主码值时可能破坏参照完整性。 被参照表 参照表 违约处理 拒绝 拒绝 可能破坏参照完整性 插入元组 可能破坏参照完整性 修改外码值 删除元组 修改主码值 6、答:
CREATE TABLE DEPT
(Deptno NUMBER(3) RIMARY KEY, Deptname VARCHAR(10), Manager VARCHAR(10), PhoneNumber Char(12) );
可能破坏参照完整性 拒绝/级联删除/设置为空值 可能破坏参照完整性 拒绝/级联删除/设置为空值 CREATE TABLE EMP (Empno NUMBER(10), Ename VARCHAR(10), Age NUMBER(2)
CONSTRAINT C1 CHECK ( Age<=60 ), Job VARCHAR(10), Sal NUMBER(9,2), Deptno NUMBER(3), RIMARY KEY (Empno),
FOREIGN KEY (Deptno) REFFERENCES DEPT(Deptno) );
7、答:对于违反实体完整性和用户定义的完整性的操作,一般都采用拒绝执行的方式进行处理。而对于违反参照完整性的操作,并非都是简单的拒绝执行,有时要根据应用语义执行一些附加的操作,以保证数据库的正确性。
第六章习题2、7
2、答:
(1)关系模式如下:
学生:S(Sno,Sname,Sbirth,Dept,Class,Rno) 班级:C(Class,Pname,Dept,Cnum,Cyear) 系:D(Dept,Dno,Office,Dnum)
学会:M(Mname,Myear,Maddr,Mnum) 学生—学会:SM(Sno,Mname,Date)
其中:Sno——学号,Sname——姓名,Sbirth——出生年月,Dept——系名,Class——班号,Rno——宿舍区,Pname——专业名, Cnum——班级人数,Cyear——入校年份,Dno——系号,Office——系办公室地点,Dnum——系人数,Mname——学会名,Myear——成立年份,Maddr——地点,Mnum——学会会员人数,Date——入会年份 (2)每个关系模式的最小函数依赖集如下: 一、
学生S (Sno,Sname,Sbirth,Dept,Class,Rno) 的最小函数依赖集如下:
Sno→Sname,Sno→Sbirth,Sno→Class,Class→Dept,Dept→Rno 传递依赖如下:
Sno→Class,Class→Dept,所以Sno与Dept之间存在着传递函数依赖Sno→Dept.
Class→Dept,Dept→Rno,所以Class与Rno之间存在着传递函数依赖Class→Rno.
Sno→Class,Class→Dept,Dept→Rno,所以Sno与Rno之间存在着传递函数依赖Sno→Rno.
(Pname,Cyear)→Class函数依赖左部具有两个属性,都是完全函数依赖,没有部分函数依赖的情况。 二、
班级C(Class,Pname,Dept,Cnum,Cyear)的最小函数依赖集如下: Class→Pname,Class→Cnum,Class→Cyear,Pname→Dept,(Pname,Cyear)→Class.
由于Class→Pname,Pname→Class,Pname→Dept,所以C1ass与Dept之间存在着传递函数依赖Class→Dept。 三、
系D(Dept,Dno,Office,Dnum)的最小函数依赖集如下: Dept→Dno,Dno→Dept,Dno→Office,Dno→Dnum
根据上述函数依赖可知,Dept与Office,Dept与Dnum之间不存在传递依赖。 四、
学会M(Mname,Myear,Maddr,Mnum)的最小函数依赖集如下: Mname→Myear,Mname→Maddr,Mname→Mnum 该模式不存在传递依赖。
五、学生—学会SM(Sno,Mname,Date)的最小函数依赖集如下: (Sno, Mname)→Date 该模式不存在传递依赖。 (Sno, Mname)→Date
函数依赖左部具有两个属性,都是完全函数依赖,没有部分函数依赖的情况。
(3)各关系模式的候选码、外部码,全码如下: 关系 候选码 外部码 全码
S Sno Dept,Class 无
C Class和(Pname,Cyear) Dept 无 D Dept和Dno 无 无 M Mname 无 无
SM (Sno, Mname) Sno, Mname 无 7 、答: (1)正确 (2)正确 (3)正确
(4)错误,正确应该是:
当且仅当多值依赖A→→B 在R 上成立,关系R(A,B,C)等于其投影R1(A,B) 和R2(A,C)的连接。 (5)正确 (6)正确 (7)正确 (8)错误。
反例:课本P52页图3.4中SC表,关系模式SC(Sno,Cno,Grade), (Sno,Cno)→Grade,但是Sno,Cno Grade,
第七章习题9、10
9、答:
数据库的逻辑结构设计就是把概念结构设计阶段设计好的基本E-R
图转换为与选用的数据库管理系统产品所支持的数据模型相符合的逻辑结构。 设计步骤为:
(1)将概念结构转换为一般的关系、网状、层次模型;
(2)将转换来的关系、网状、层次模型向特定数据库管理系统支持下的数据模型转换; (3)对数据模型进行优化。 10、答:
(1)习题7的E-R图为:
学校 1 校——系 n 系 1 1 系——班级 n 系——教研室 n 班级 1 教研室 1 班级——学生 n n 1 室——教员 n 学生 m 指导 教员 选修 n 课程
各实体属性如下: 系:系编号, 系名, 学校名
班级:班级编号, 班级名, 年级, 系编号 教研室:教研室编号, 名称, 系编号
学生:学号,姓名,性别, 学历, 班级编号, 导师职工号 课程:课程编号,课程名
教员:职工号, 姓名, 职称, 教研室编号
各联系的属性如下: 选修课: 成绩
转换的关系模型如下(带下划线的属性是主码属性): 系(系编号, 系名, 学校名)
班级(班级编号, 班级名, 年级, 系编号) 教研室(教研室编号, 名称, 系编号)
学生(学号,姓名,性别, 学历, 班级编号, 导师职工号) 课程(课程号,课程名)
教员(职工号, 姓名, 职称, 教研室编号) 选课(学号, 课程号, 成绩)
(2)习题8的E-R图为:
产品 m 组成 n 零件 m n 存储 制造 m 仓库 1 n n 存放 材料
各实体属性如下: 仓库:仓库号,仓库名
产品:产品号,产品名称,仓库号 零件:零件号,零件名称
材料:材料号, 材料名称, 材料类别, 仓库号, 存放量 各联系的属性如下: 产品组成:使用零件数量 零件组成:使用材料数量 零件储存:存储量
材料存放:存放量
转换的关系模型如下(带下划线的属性是主码属性): 仓库(仓库号,仓库名)
产品(产品号,产品名称,仓库号) 零件 (零件号,零件名称)
材料(材料号, 材料名称, 材料类别, 仓库号,产品组成(产品号,零件号,使用零件数量) 零件组成(零件号, 材料号,使用材料数量) 零件储存(零件号,仓库号, 存储量)
第九章习题3
3、
存放量) 结果
project(Cname) Select(Student. Sdept =’ IS’)
Join(SC. Cno = Course. Cno) Join(Student. Sno = SC. Sno)
Course Student SC 原始语法树
Cname
Student.Sdept'IS'
SC. Cno Course. Cno
×
Student.SnoSC.Sno
Student
SC
关系代数语法树
Course
Cname
SC. Cno Course. Cno
×
Student.SnoSC.Sno
SC
Course
Student.Sdept'IS'
Student 优化后语法树
第十章习题3、4、5
3、登记日志文件时为什么先写日志文件,后写数据库?
答:把对数据库的修改写到数据库中和把这个修改的日志记录写到日志文件中是两个不同的操作。有可能在这两个操作之间发生故障,即两个操作只完成了一个。如果先写了数据库修改,而在运行记录中没有登记这个修改,则以后就无法恢复这个修改了。如果先写日志,但没有修改数据库,按日志文件恢复时只不过是多执行一次不必要的UNDO操作,并不会影响数据库的正确性。
4、答:
(1)如果系统故障发生在14之后,T1,T3需要重做,T2,T4需要回滚。
(2)如果系统故障发生在10之后,T1需要重做,T2,T3需要回滚。 (3)如果系统故障发生在9之后,T1需要重做,T2,T3需要回滚。 (4)如果系统故障发生在7之后,T1需要重做,T2需要回滚。 5、答:
(1)如果系统故障发生在14之后,A=8, B=7, C=11; (2)如果系统故障发生在12之后,A=10, B=0, C=11; (3)如果系统故障发生在10之后,A=10, B=0, C=11; (4)如果系统故障发生在9之后,A=10, B=0, C=11; (5)如果系统故障发生在7之后,A=10, B=0, C=11; (6)如果系统故障发生在5之后,A=0, B=0, C=0
第十一章习题4、7、9*、10*
4、如何用封锁机制保证数据的一致性?
答:数据库管理系统在对数据进行读、写操作之前首先对该数据执行封锁操作,例如事Tl在对A进行修改之前先对A执行Xlock(A),即对A加x锁。这样,当T2请求对A加x锁时就被拒绝,T2只能等待Tl释放A上的锁后才能获得对A的x锁,这时它读到的A是Tl更新
后的值,再按此新的A值进行运算。这样就不会丢失Tl的更新。 DBMS 按照一定的封锁协议对并发操作进行控制,使得多个并发操作有序地执行,就可以避免丢失修改、不可重复读和读“脏”数据等数据不一致性。
7、请给出检测死锁发生的一种方法,当发生死锁后如何解除死锁? 答:(1)数据库管理系统在解决死锁的问题上通常采用的方法是:允许死锁发生,DBMS检测到死锁后对其加以解除。
(2)数据库系统中诊断死锁的方法与操作系统类似,一般使用超时法或事务等待图法。
超时法:如果一个事务的等待时间超过了规定的时限,就认为发生了死锁。超时法实现简单,但有可能误判死锁,事务因其他原因长时间等待超过时限时,系统会误认为发生了死锁。若时限设置得太长,又不能及时发现死锁发生。 等待图法:
事务等待图是一个有向图G=(T,U),T为结点的集合,每个结点表示正运行的事务;U为边的集合,每条边表示事务等待的情况。若T1等待T2,则T1、T2之间划一条有向边,从T1指向T2。事务等待图动态地反映了所有事务的等待情况。并发控制子系统周期性地(比如每隔1分钟)检测事务等待图,如果发现图中存在回路,则表示系统中出现了死锁。
DBMS并发控制子系统检测到死锁后,就要设法解除。通常采用的方法是选择一个处理死锁代价最小的事务,将其撤消,释放此事务持有
的所有锁,使其他事务得以继续运行下去。当然,对撤销的事务所执行的数据修改操作必须加以恢复。 9*、答:
(1)可能的结果有4种,分别为2、4、8、16
执行次序 T1T2T3 T1T3T2 T2T1T3 T2T3T1 T3T1T2 T3T2T1 执行结果 16 8 4 2 4 2 (2)
T1
Slock A 等待 等待 等待
Slock A Y=A=0 Unlock A Xlock A A=Y*2 写回A(=0) Unlock A
T2
T3
Slock A Y=A=0 Unlock A Xlock A A=Y+2 写回A(=2) Unlock A
Slock A 等待 等待 等待 Slock A Y=A=2 Unlock A Xlock A A=Y**2
写回A(=4) Unlock A
最后结果为4,是可串行化的调度。
(3)
T1
Slock A Y=A=0 Unlock A
T2
T3
Slock A Y=A=0 Unlock A Xlock A A=Y+2 写回A(=2) Unlock A
Xlock A 等待 等待 A=Y*2 写回A(=0) Unlock A
Slock A 等待 等待 Slock A Y=A=2 Unlock A Xlock A A=Y**2 写回A(=4) Unlock A
最后结果A为0,是非串行化调度。
(4)遵循两段锁协议,不产生死锁的串行化调度: T1 Slock A Y=A=0
T2
T3
Xlock A A=Y+2 写回A(=2) Unlock A Unlock A
Slock A 等待 等待 Y=A=2 Xlock A 等待 A=Y*2 写回A(=4) Unlock A Unlock A
Slock A 等待 等待 等待 Y=A=4 Xlock A A=Y**2 写回A(=16) Unlock A Unlock A
(5)遵循两段锁协议,产生死锁的调度: T1
T2 Slock A Y=A=0
T3
Slock A Y=A=0 Xlock A 等待
Xlock A 等待
Slock A Y=A=0 Xlock A 等待
10*、答:该调度是冲突可串行调度。 因为
Sc1= r3(B)r1(A)w3(B)r2(B)r2(A)w2(B)r1(B)w1(A), 交换r1(A)与w3(B),得到
r3(B)w3(B) r1(A)r2(B)r2(A)w2(B)r1(B)w1(A), 再交换r1(A)与r2(B)r2(A)w2(B),得到
Sc2= r3(B)w3(B)r2(B)r2(A)w2(B)r1(A)r1(B)w1(A)
由于Sc2 等价于一个串行调度T3、T2、T1,而且两次交换都是基于不冲突操作的,所以Sc1=
r3(B)r1(A)w3(B)r2(B)r2(A)w2(B)r1(B)w1(A)是冲突可串行化的调度。
因篇幅问题不能全部显示,请点此查看更多更全内容