数据库系统概论离线作业.docx
《数据库系统概论离线作业.docx》由会员分享,可在线阅读,更多相关《数据库系统概论离线作业.docx(35页珍藏版)》请在冰豆网上搜索。
数据库系统概论离线作业
浙江大学远程教育学院
《数据库系统概论》课程作业
姓名:
学号:
年级:
学习中心:
—————————————————————————————
第一章习题2、6、10
第二章习题5、6
第三章习题4、5、9
第四章习题3、7、8、10
第五章习题2、5、6、7
第六章习题2、7
第七章习题9、10
第九章习题3
第十章习题3、4、5
第十一章习题4、7、9*、10*
第一章习题
2、答:
使用数据库系统有许多优点,主要是:
(1)大大提高应用系统的开发效率。
因为数据库系统中应用程序不必考虑数据的定义、存储和数据存取的具体路径等细节工作,这些都由数据库管理系统完成,开发人员就可以专注于用户需求的理解和应用逻辑的设计等工作。
(2)应用逻辑或是数据的逻辑结构发生变化,数据库系统提供了数据与程序之间的独立性。
数据库系统具有逻辑独立性,逻辑结构改变,用户程序也可以不变。
这样既简化了应用程序的编制,又大大减少了应用程序的维护和修改。
(3)减轻数据库管理人员维护系统的负担。
因为数据库中的数据是由数据库管理系统统一管理和控制,包括数据的完整性和安全性、并发控制、数据库恢复等都由数据库管理系统执行。
总是,数据库管理系统便于数据的集中管理,控制数据冗余,提高数据的利用率和一致性,又有利于应用程序的开发和维护。
6、答:
数据库管理系统的主要功能有:
(1)数据库定义功能;
(2)数据组织、存储和管理功能;
(3)数据操纵功能;
(4)数据库的事务管理和运行管理;
(5)数据库的建立和维护功能;
(6)其他功能,包括数据库管理系统与网络中其他软件系统的通信功能,不同数据库之间的互访和互操作功能等。
10、答:
层次模型用树形结构来表示各类实体以及实体间的联系。
实例1:
教员学生层次模型
实例2:
行政机构层次模型
实例3:
行政区域层次模型
第二章习题
5、答:
关系模型的完整性规则是对关系的某种约束条件。
关系模型中有三类完整性约束:
实体完整性、参照完整性和用户自定义完整性。
其中实体完整性和参照完整性是关系模型必须满足的完整性约束条件,被称做是关系的两个不变性,应该由关系系统自动支持。
(1)实体完整性规则:
若属性A是基本关系R的主属性,则属性A不能取空值。
(2)参照完整性规则:
若属性(或属性组)F是基本关系R的外码,它与基本关系S的主码KS相对应(基本关系R和S不一定是不同的关系),则对于R中每个元组在F上的值必须为:
1)空值(F的每个属性值均为空值);
2)等于S中某个元组的主码值。
(3)用户自定义的完整性是针对某一具体关系数据库的约束条件。
它反映某一具体应用所涉及的数据必须满足的语义要求。
在参照完整性中,外部码属性的值可以为空,它表示该属性的值尚未确定,但前提条件是该外部码属性不是其所在关系的主属性。
例如,在下面的“学生”表中,“专业号”是一个外部码,不是学生表的主属性,可以为空,其语义是,该学生的专业尚未确定。
即属性”专业号”本身不是主属性,则可以取空值,否则不能取空值。
学生(学号,姓名,性别,专业号,年龄)
专业(专业号,专业名)
在下面的“选修”表中的“课程号”虽然也是一个外部码属性,但它又是"课程"表的主属性,所以不能为空,因为关系模型必须满足实体完整性。
课程(课程号,课程名,学分)
选修(学号,课程号,成绩)
6、答:
(1)
关系代数:
ALPHA语言:
GETW(SPJ.SNO):
SPJ.JNO=’J1’
QBE语言:
SPJ
SNO
PNO
JNO
QTY
P.S1
J1
(2)
关系代数:
ALPHA语言:
GETW(SPJ.SNO):
SPJ.JNO=’J1’∧SPJ.PNO=’P1’
QBE语言:
SPJ
SNO
PNO
JNO
QTY
P.S1
P1
J1
(3)
关系代数:
注:
是连在一起的,表示连接
ALPHA语言:
QBE语言:
SPJ
SNO
PNO
JNO
QTY
P.S1
P1
J1
P
PNO
PNAME
COLOR
WEIGHT
P1
红
(4)
关系代数:
ALPHA语言:
QBE语言:
S
SNO
SNAME
STATUS
CITY
S1
天津
P
PNO
PNAME
COLOR
WEIGHT
P1
红
SPJ
SNO
PNO
JNO
QTY
S1
P1
P.J1
(5)
关系代数:
ALPHA语言:
第三章习题
4、答:
a.建立四个表:
建立S表:
S(SNO,SNAME,STATUS,CITY)
CREATETABLES
(SNOCHAR(3),
SNAMECHAR(10),
STATUSCHAR
(2),
CITYCHAR(10));
建立P表:
P(PNO,PNAME,COLOR,WEIGHT0
CREATETABLEP
(PNOCHAR(3),
PNAMECHAR(10),
COLORCHAR(4),
WEIGHTINT);
建立J表:
J(JNO,JNAME,CITY);
CREATETABLEJ
(JNOCHAR(3),
JNAMECHAR(10),
CITYCHAR(10));
建立SPJ表:
SPJ(SNO,PNO,JNO,QTY);
CREATETABLESPJ
(SNOCHAR(3),
PNOCHAR(3),
JNOCHAR(3),
QTYINT));
b.查询:
(1)求供应工程J1 零件的供应商号码 SNO
SELECTDISTINCTSNOFROMSPJWHEREJNO='J1'
(2)求供应工程J1零件 Pl 的供应商号码 SNO
SELECTDISTINCTSNO
FROMSPJ
WHEREJNO='J1'ANDPNO='P1'
(3)求供应工程 J1零件为红色的供应商号码 SNO
SELECTDISTINCTSNO
FROMSPJ,P
WHEREJNO='J1'ANDSPJ.PNO=P.PNOANDCOLOR='红'
(4)求没有使用天津供应商生产的红色零件的工程号JNO;
SELECTJNO
FROMJ
WHERENOTEXISTS
(SELECT*
FROMSPJ
WHERESPJ.JNO=J.JNO
ANDSNOIN
(SELECTSNO
FROMS
WHERECITY=’天津’)
ANDPNOIN
(SELECTPNO
FROMP
WHERECOLOR=’红’));
(5)求至少用了供应商Sl所供应的全部零件的工程号JNO
SELECTDISTINCTJNO
FROMSPJSPJZ
WHERENOTEXISTS
(SELECT*
FROMSPJSPJX
WHERESNO=’J1’
ANDNOTEXISTS
(SELECT*
FROMSPJSPJY
WHERESPJY.PNO=SPJX.PNO
ANDSPJY.JNO=SPJZ.JNO));
5、答:
(1)
SELECTSNAME,CITY
FROMS;
(2)
SELECTPNAME,COLOR,WEIGHT
FROMP;
(3)
SELECTJNO
FROMSPJ
WHERESNO=’S1’;
(4)
SELECTP.PNAME,SPJ.QTY
FROMP,SPJ
WHEREP.PNO=SPJ.PNOANDSPJ.JNO=’J2’;
(5)
SELECTDISTINCTPNO
FROMSPJ
WHERESNOIN
(SELECTSNO
FROMS
WHERECITY=’上海’);
(6)
SELECTJNAME
FROMJ,SPJ,S
WHEREJ.JNO=SPJ.JNO
ANDSPJ.SNO=S.SNO
ANDS.CITY=’上海’;
(7)
SELECTJNO
FROMJ
WHERENOTEXISITS
(SELECT*
FROMSPJ,S
WHEREJ.JNO=SPJ.JNO
ANDSPJ.SNO=S.SNO
ANDS.CITY=’天津);;
(8)
UPDATEP
SETCOLOR=’蓝’
WHERECLOOR=’红’;
(9)
UPDATESPJ
SETSNO=’S3’
WHERESNO=’S5’
ANDJNO=’J4’
ANDPNO=’P6’;
(10)
DELETE
FROMSPJ
WHERESNO=’S2’;
DELETE
FROMS
WHERESNO=’S2’;
(11)
INSERTINTOSPJ(SNO,JNO,PNO,QTY)
VALUES(S2,J6,P4,200);
9、答:
CREATEVIEWV_SPJAS
SELECTSNO,PNO,QTY
FROMSPJ
WHEREJNO=
(SELECTJNO
FROMJ
WHEREJNAME=’三建’);
(1)SELECTPNO,QTY
FROMV_SPJ;
(2)SELECTPNO,QTY
FROMV_SPJ
WHERESNO=’S1’;
第四章习题
3、答:
(1)信息安全标准的发展历史,如下图:
TCSEC是1985年美国国防部正式颁布的《DoD可信计算机系统评估准则》。
CC通用准则V2.1版于1999年被ISO纳为国际标准,2001年我国采用其为国家标准。
目前CC已经基本取代了TCSEC,成为评估信息产品安全性的主要标准。
TCSEC/TDI标准将TCSEC扩展到数据库管理系统,TCSEC/TDI中定义了数据库管理系统的设计与实现中需满足和用以进行安全性级别评估的标准,从安全策略、责任、保证和文档4各方面来描述安全性级别划分的标准。
CC提出了目前国际上公认的表述信息技术安全性的结构,即把对信息产品的安全要求分为安全功能要求和安全保证要求。
安全功能要求用以规范产品和系统的安全行为,安全保证要求解决如何正确有效地实施这些功能。
(2)CC评估保证级划分如下:
7、答:
(1)
GRAINTSELECT
ON职工,部门
TO王明;
(2)
GRAINTINSERT,DELETE
ON职工,部门
TO李勇;
(3)
GRAINTSELECT
ON职工
WHENUSER()=NAME
TOALL;
(4)
GRAINTSELECT,UPDATE(工资)
ON职工
TO刘星;
(5)
GRAINTALTERTABLE
ON职工,部门
TO张新;
(6)
GRAINTALLPRIVILIGES
ON职工,部门
TO周平
WITHGRANTOPTION;
(7)
CREATEVIEW部门工资
AS
SELECT部门.名称,MAX(工资),MIN(工资),AVG(工资)
FROM职工,部门
WHERE职工.部门号=职工.部门号
GROUPBY职工.部门号
GRAINTSELECT
ON部门工资
TO杨兰
8、答:
(1)
REVOKESELECT
ON职工,部门
FROM王明;
(2)
REVOKEINSERT,DELETE
ON职工,部门
FROM李勇;
(3)
REVOKESELECT
ON职工
WHENUSER()=NAME
FROMALL;
(4)
REVOKESELECT,UPDATE(工资)
ON职工
FROM刘星;
(5)
REVOKEALTERTABLE
ON职工,部门
FROM张新;
(6)
REVOKEALLPRIVILIGES
ON职工,部门
FROM周平;
(7)
REVOKESELECT
ON部门工资
FROM杨兰;
DROPVIEW部门工资
10、答:
因为强制存取控制是对数据本身进行密级标记,无论数据如何复制,标记与数据是一个不可分的整体,只有符合密级标记要求的用户才可以操纵数据,从而提供了更高级别的安全性。
第五章习题
2、答:
数据的完整性和安全性是两个既有联系又不尽相同的概念。
数据的完整性是为了防止数据库中存在不符合语义的数据,也就是防止数据库中存在不正确的数据。
数据的安全性是保护数据库防止恶意破坏和非法存取。
安全性控制的防范对象是非法用户和非法操作,防止他们对数据库数据的非法存取。
5、答:
关系数据库管理系统在实现参照完整性时需要考虑可能破坏参照完整性的各种情况,以及违约后的处理策略。
下表总结了可能破坏参照完整性的4种情况及可采取的违约策略:
4种情况分别是指:
在参照关系中插入元组、修改外码值时可能破坏参照完整性,在删除被参照表的元组、修改主码值时可能破坏参照完整性。
被参照表
参照表
违约处理
可能破坏参照完整性
插入元组
拒绝
可能破坏参照完整性
修改外码值
拒绝
删除元组
可能破坏参照完整性
拒绝/级联删除/设置为空值
修改主码值
可能破坏参照完整性
拒绝/级联删除/设置为空值
6、答:
CREATETABLEDEPT
(DeptnoNUMBER(3)RIMARYKEY,
DeptnameVARCHAR(10),
ManagerVARCHAR(10),
PhoneNumberChar(12)
);
CREATETABLEEMP
(EmpnoNUMBER(10),
EnameVARCHAR(10),
AgeNUMBER
(2)
CONSTRAINTC1CHECK(Age<=60),
JobVARCHAR(10),
SalNUMBER(9,2),
DeptnoNUMBER(3),
RIMARYKEY(Empno),
FOREIGNKEY(Deptno)REFFERENCESDEPT(Deptno)
);
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,Cno
Grade
第七章习题
9、答:
数据库的逻辑结构设计就是把概念结构设计阶段设计好的基本E-R图转换为与选用的数据库管理系统产品所支持的数据模型相符合的逻辑结构。
设计步骤为:
(1)将概念结构转换为一般的关系、网状、层次模型;
(2)将转换来的关系、网状、层次模型向特定数据库管理系统支持下的数据模型转换;
(3)对数据模型进行优化。
10、答:
(1)习题7的E-R图为:
各实体属性如下:
系:
系编号,系名,学校名
班级:
班级编号,班级名,年级,系编号
教研室:
教研室编号,名称,系编号
学生:
学号,姓名,性别,学历,班级编号,导师职工号
课程:
课程编号,课程名
教员:
职工号,姓名,职称,教研室编号
各联系的属性如下:
选修课:
成绩
转换的关系模型如下(带下划线的属性是主码属性):
系(系编号,系名,学校名)
班级(班级编号,班级名,年级,系编号)
教研室(教研室编号,名称,系编号)
学生(学号,姓名,性别,学历,班级编号,导师职工号)
课程(课程号,课程名)
教员(职工号,姓名,职称,教研室编号)
选课(学号,课程号,成绩)
(2)习题8的E-R图为:
各实体属性如下:
仓库:
仓库号,仓库名
产品:
产品号,产品名称,仓库号
零件:
零件号,零件名称
材料:
材料号,材料名称,材料类别,仓库号,存放量
各联系的属性如下:
产品组成:
使用零件数量
零件组成:
使用材料数量
零件储存:
存储量
材料存放:
存放量
转换的关系模型如下(带下划线的属性是主码属性):
仓库(仓库号,仓库名)
产品(产品号,产品名称,仓库号)
零件(零件号,零件名称)
材料(材料号,材料名称,材料类别,仓库号,存放量)
产品组成(产品号,零件号,使用零件数量)
零件组成(零件号,材料号,使用材料数量)
零件储存(零件号,仓库号,存储量)
第九章习题
3、答:
第十章习题
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、答:
数据库管理系统在对数据进行读、写操作之前首先对该数据执行封锁操作,例如事Tl在对A进行修改之前先对A执行Xlock(A),即对A加x锁。
这样,当T2请求对A加x锁时就被拒绝,T2只能等待Tl释放A上的锁后才能获得对A的x锁,这时它读到的A是Tl更新后的值,再按此新的A值进行运算。
这样就不会丢失Tl的更新。
DBMS按照一定的封锁协议对并发操作进行控制,使得多个并发操作有序地执行,就可以避免丢失修改、不可重复读和读“脏”数据等数据不一致性。
Tl
T2
①Xlock(A)
获得控制权
②读A=16
Xlock(A)
等待
③A←A-1
等待
写回A=15
等待
Commit
等待
Unlock(A)
④
获得Xlock(A)
读A=15
A←A-1
⑤
写回A=14
Commit
Unlock(A)
7、答:
(1)数据库管理系统在解决死锁的问题上通常采用的方法是:
允许死锁发生,DBMS检