数据库系统概论离线作业答案文档格式.docx
《数据库系统概论离线作业答案文档格式.docx》由会员分享,可在线阅读,更多相关《数据库系统概论离线作业答案文档格式.docx(14页珍藏版)》请在冰豆网上搜索。
第十一章习题4、7、9、10
2、
答:
数据库系统使信息系统从以加工数据的程序为中心转向围绕共享的数据库为中心的阶段,这样既便于数据的集中管理,又有利于应用程序的研制和维护,提高了数据的利用率和相容性,提高了决策的可靠性。
6、
数据定义功能、数据操纵功能、数据库的运行管理、数据库的建立和维护功能。
10、
1n
11
nm
4、
答:
关系模型的完整性规则是对关系的某种约束条件。
关系模型中可以有三类完整性约束:
实体完整性、参照完整性和用户定义的完整性。
5.
答:
(1)πSNO(σJNO=’J1’(SPJ))
(2)πSNO(σJNO='
J1'
∧PNO=’P1’(SPJ)
(3)πSNO(σJNO='
(SPJ)∞σCOLOR='
红'
(P))
(4)πJNO(SPJ)-πJNO(σCITY='
天津'
(S)∞(SPJ)∞σCOLOR='
(5)πJNO,PNO(SPJ)÷
πPNO(σSNO='
S1'
(SPJ))
3、
对于S表:
S(SNO,SNAME,STATUS,CITY);
CREATETABLES(SNOCHAR(3),
SNAMECHAR(10),STATUSCHAR
(2),CITYCHAR(10));
对于P表:
P((PNO,PNAME,COLOR,WEIGHT)
CREATETABLEP(PNOCHAR(6),PNAMECHAR(10),COLORCHAR
(2),WEIGHTMEMBER);
对于J表:
J(JNO,JNAME,CITY);
建J表:
CREATETABLEJ(JnoC
(2)UNlQUE,JNAMEC(8),CITYC(4))
对于sPJ表:
sPJ(sNo,PNo,JNo,QTY);
建SPJ表:
SPJ(SNO,PNO,JNO,QTY)
CREATETABLESPJ(SnoC
(2),PnoC
(2),JNOC
(2),QTYINT))
4.
(1)求供应工程J1零件的供应商号码SNO;
SELECTSNOFROMSPJWHEREJNO=‘J1'
;
(2)求供应工程J1零件P1的供应商号码SNO;
ANDPNO=‘P1'
(3)求供应工程J1零件为红色的供应商号码SNO;
ANDPNOIN
(SELECTPNOFROMPWHERECOLOR=‘红'
);
(4)求没有使用天津供应商生产的红色零件的工程号JNO;
SELECTJNOFROMJWHEREJNONOTIN
(SELECTJNOFROMS,P,SPJWHERES.SNO=SPJ.SNO
ANDSPJ.PNO=P.PNOANDCOLOR=’红’ANDCITY=’天津’)
(5)SELECTDISTINCTJno
FROMSPJSPJX
WHERENOTEXISTS
(SELECT*
FROMSPJSPJY
WHERESCY.Sno='
S1'
AND
NOTEXISTS
FROMSPJSPJZ
WHERESCZ.Sno=SCX.SnoAND
SCZ.Jno=SCY.Jno));
5.
(1)找出所有供应商的姓名和所在城市。
SELECTSNAME,CITYFROMS;
(2)找出所有零件的名称、颜色、重量。
SELECTPNAME,COLOR,WEIGHTFROMP;
(3)找出使用供应商S1所供应零件的工程号码。
SELECTJNOFROMSPJWHERESNO=‘S1'
;
(4)找出工程项目J2使用的各种零件的名称及其数量。
SELECTP.PNAME,SPJ.QTYFROMP,SPJ
WHEREP.PNO=SPJ.PNOANDSPJ.JNO='
J2'
(5)找出上海厂商供应的所有零件号码。
SELECTDISTINCTPNOFROMSPJWHERESNOIN
(SELECTSNOFROMSWHERECITY='
上海'
);
或:
SELECTPNOFROMS,SPJWHERES,SNO=SPJ.SNOANDS.CITY=’上海’
(6)找出使用上海产的零件的工程名称。
SELECTJNAMEFROMJ,SPJ,S
WHEREJ.JNO=SPJ.JNOANDSPJ.SNO=S.SNOANDS.CITY='
(7)找出没有使用天津产的零件的工程号码。
SELECTDISTINCTJNOFROMSPJWHEREJNONOTIN
(SELECTJNOFROMS,SPJWHERES.SNO=SPJ.SNOANDS.CITY=’天津’)
(8)把全部红色零件的颜色改成蓝色。
UPDATEPSETCOLOR='
蓝'
WHERECOLOR='
;
(9)由S5供给J4的零件P6改为由S3供应,请作必要的修改。
UPDATESPJSETSNO='
S3'
WHERESNO='
S5'
ANDJNO='
J4'
ANDPNO='
P6'
(10)从供应商关系中删除S2的记录,并从供应情况关系中删除相应的记录。
解析:
注意删除顺序,应该先从SPJ表中删除供应商S2所供应零件的记录,然后从从S表中删除S2。
DELETFROMSPJWHERESNO=‘S2’
DELETFROMSWHERESNO=‘S2’
(11)请将(S2,J6,P4,200)插入供应情况关系。
INSERTINTOSPJ(SNO,JNO,PNO,QTY)VALUES(‘S2’,‘J6’,‘P4’,200);
11.
建视图:
CREATEVIEWV_SPJAS
SELECTSNO,PNO,QTYFROMSPJWHEREJNO=
(SELECTJNOFROMJWHEREJNAME='
三建'
对该视图查询:
(1)找出三建工程项目使用的各种零件代码及其数量。
SELECTPNO,QTYFROMV_SPJ;
(2)找出供应商S1的供应情况。
SELECTPNO,QTY/*S1供应三建工程的零件号和对应的数量*/
FROMV_SPJ
WHERESNO='
4、
8.
(a)用户王明对两个表有SELECT权力;
GRANTSELECTON职工,部门
TO王明;
(b)用户李勇对两个表有INSERT和DELETE权力;
GRANTINSERT,DELETEON职工,部门
TO李勇;
(c)每个职工只对自己的记录有SELECT权力;
GRANTSELECTON职工
WHENUSER()=NAME
TOALL;
这里假定系统的GRANT语句支持WHEN子句和USER()的使用。
用户将自己的名字作为ID。
注意,不同的系统这些扩展语句可能是不同的。
读者应该了解你使用的DBMS产品的扩展语句。
(d)用户刘星对职工表有SELECT权力,对工资字段具有更新权力;
GRANTSELECT,UPDATE(工资)ON职工
TO刘星;
(e)用户张新具有修改这两个表的结构的权力;
GRANTALTERTABLEON职工,部门
TO张新;
(f)用户周平具有对两个表所有权力(读,插,改,删数据),并具有给其他用户授权的权力;
GRANTALLPRIVILIGESON职工,部门
TO周平
WITHGRANTOPTION;
(g)用户杨兰具有从每个部门职工中SELECT最高工资、最低工资、平均工资的权力,他不能查看每个人的工资。
首先建立一个视图。
然后对这个视图定义杨兰的存取权限。
CREATEVIEW部门工资AS
SELECT部门.名称,MAX(工资),MIN(工资),AVG(工资)
FROM职工,部门
WHERE职工.部门号=部门.部门号
GROUPBY职工.部门号;
GRANTSELECTON部门工资
TO杨兰;
9.
(a)REVOKESELECTON职工,部门FROM王明;
(b)REVOKEINSERT,DELETEON职工,部门FROM李勇;
(c)REOVKESELECTON职工WHENUSER()=NAMEFROMALL;
这里假定用户将自己的名字作为ID,且系统的REOVKE语句支持WHEN子句,系统也支持USER()的使用。
(d)REVOKESELECT,UPDATEON职工FROM刘星;
(e)REVOKEALTERTABLEON职工,部门FROM张新;
(f)REVOKEALLPRIVILIGESON职工,部门FROM周平;
(g)REVOKESELECTON部门工资FROM杨兰;
DROPVIEW部门工资;
11、
主体是系统中的活动实体,既包括DBMS所管理的实际用户,也包括代表用户的各进程。
客体是系统中的被动实体,是受主体操纵的,包括文件、基表、索引、视图等。
对于主体和客体,DBMS为它们每个实例(值)指派一个敏感度标记(Label)。
敏感度标记被分成若干级别,例如绝密(TopSecret)、机密(Secret)•可信(Confidential)、公开(PubliC)等。
主体的敏感度标记称为许可证级别(ClearanCe玫vel),客体的敏感度标记称为密级(ClassificationLevel)。
2.
数据的完整性和安全性是两个不同的概念,但是有一定的联系。
前者是为了防止数据库中存在不符合语义的数据,防止错误信息的输入和输出,即所谓垃圾进垃圾出(GarbageInGarbageOut)所造成的无效操作和错误结果。
后者是保护数据库防止恶意的破坏和非法的存取。
也就是说,安全性措施的防范对象是非法用户和非法操作,完整性措施的防范对象是不合语义的数据。
RDBMS在实现参照完整性时需