数据库系统概论_离线作业第1次
发布时间:2024-08-30
发布时间:2024-08-30
浙江大学 浙大 远程教育 计算机科学与技术本科,数据库系统概论_离线作业
《数据库系统概论》离线作业第1次
第一章习题2、6、10
2、使用数据库系统有什么好处?
答:数据库系统使信息系统从以加工数据的程序为中心转向围绕共享的数据库为中心的阶段,这样既便于数据的集中管理,又有利于应用程序的研制和维护,提高了数据的利用率和相容性,提高了决策的可靠性。
6、数据库管理系统的主要功能有哪些?
答:数据定义功能、数据操纵功能、数据库的运行管理、数据库的建立和维护功能。
10、试给出三个实际情况的E-R图,要求实体型之间具有一对一、一对多、多对多各种不同的联系。
第二章习题4、5
4、4.试述关系模型的完整性规则。在参照完整性中,为什么外部码属性的值也可以为空?什么情况下才可以为空? 答:关系模型的完整性规则是对关系的某种约束条件。关系模型中可以有三类完整性约束:实体完整性、参照完整性和用户定义的完整性。
浙江大学 浙大 远程教育 计算机科学与技术本科,数据库系统概论_离线作业
在参照完整性中,外部码属性的值可以为空,它表示该属性的值尚未确定。但前提条件是该外部码属性不是其所在关系的主属性。 例如,在下面的 “学生”表中,“专业号”是一个外部码,不是学生表的主属性,可以为空。其语义是,该学生的专业尚未确定。
学生(学号,姓名,性别,专业号,年龄)
专业(专业号,专业名)
而在下面的 “选修”表中的“课程号”虽然也是一个外部码属性,但它又是“选修”表的主属性,所以不能为空。因为关系模型必须满足实体完整性。 课程(课程号,课程名,学分)
选修(学号,课程号,成绩)
5.用关系代数式表示
答:(1) πSNO(σ JNO=’J1’(SPJ)) (2) πSNO(σ JNO='J1'∧PNO=’P1’(SPJ)
(3) πSNO(σ JNO='J1'(SPJ)∞σ COLOR='红'(P))
(4) πJNO(SPJ)- πJNO(σCITY='天津'(S)∞(SPJ)∞σ COLOR='红'(P)) (5) πJNO,PNO(SPJ)÷ πPNO(σ SNO='S1'(SPJ))
第三章习题3、4、5、11
3、用SQL语句建立第二章习题5中的四个表。
答:对于 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 ,WEIGHT )
CREATE TABLE P(PNO CHAR(6),PNAME CHAR(10),COLOR CHAR(2),WEIGHT MEMBER);
对于 J 表: J ( JNO , JNAME , CITY) ; 建 J 表: CREATE TABLE J(Jno C(2) UNlQUE,JNAME C(8), CITY C(4)) 对于 sPJ 表: sPJ ( sNo , PNo , JNo , QTY) ; 建 SPJ 表:SPJ(SNO,PNO,JNO,QTY)
CREATE TABLE SPJ(Sno C(2),Pno C(2),JNO C(2), QTY INT))
4. 针对上题中建立的四个表试用SQL语言完成第二章习题5中的查询。 答:
(1) 求供应工程J1零件的供应商号码SNO; SELECT SNO FROM SPJ WHERE JNO=‘J1';
(2) 求供应工程J1零件P1的供应商号码SNO;
SELECT SNO FROM SPJ WHERE JNO=‘J1' AND PNO=‘P1'; ( 3) 求供应工程J1零件为红色的供应商号码SNO; SELECT SNO FROM SPJ WHERE JNO=‘J1' AND PNO IN (SELECT PNO FROM P WHERE COLOR=‘红');
( 4) 求没有使用天津供应商生产的红色零件的工程号JNO;
浙江大学 浙大 远程教育 计算机科学与技术本科,数据库系统概论_离线作业
SELECT JNO FROM J WHERE JNO NOT IN
(SELECT JNO FROM S, P, SPJ WHERE S.SNO=SPJ.SNO AND SPJ.PNO=P.PNO AND COLOR=’红’ AND CITY=’天津’) (5) SELECT DISTINCT Jno FROM SPJ SPJX WHERE NOT EXISTS (SELECT *
FROM SPJ SPJY WHERE SCY.Sno = 'S1 ' AND NOT EXISTS
(SELECT *
FROM SPJ SPJZ
WHERE SCZ.Sno=SCX.Sno AND SCZ.Jno=SCY.Jno));
5. 针对习题3中的四个表试用SQL语言完成以下各项操作: (1) 找出所有供应商的姓名和所在城市。 (2) 找出所有零件的名称、颜色、重量。
(3) 找出使用供应商S1所供应零件的工程号码。
(4) 找出工程项目J2使用的各种零件的名称及其数量。 (5) (6) (7) (8)
找出上海厂商供应的所有零件号码。 找出使用上海产的零件的工程名称。
找出没有使用天津产的零件的工程号码。 把全部红色零件的颜色改成蓝色。
(9) 由S5供给J4的零件P6改为由S3供应,请作必要的修改。
(10) 从供应商关系中删除S2的记录,并从供应情况关系中删除相应的记录。 (11) 请将 (S2,J6,P4,200) 插入供应情况关系。 答:
(1) 找出所有供应商的姓名和所在城市。 SELECT SNAME, CITY FROM S; (2) 找出所有零件的名称、颜色、重量。
SELECT PNAME, COLOR, WEIGHT FROM P; (3) 找出使用供应商S1所供应零件的工程号码。 SELECT JNO FROM SPJ WHERE SNO=‘S1';
(4) 找出工程项目J2使用的各种零件的名称及其数量。 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='上海');
或:SELECT PNO FROM S,SPJ WHERE S,SNO=SPJ.SNO AND S.CITY=’上海’ (6) 找出使用上海产的零件的工程名称。 SELECT JNAME FROM J, SPJ, S
浙江大学 浙大 远程教育 计算机科学与技术本科,数据库系统概论_离线作业
WHERE J. JNO=SPJ. JNO AND SPJ. SNO=S.SNO AND S.CITY='上海'; (7) 找出没有使用天津产的零件的工程号码。
SELECT DISTINCT JNO FROM SPJ WHERE JNO NOT IN
(SELECT JNO FROM S,SPJ WHERE S.SNO=SPJ.SNO AND S.CITY=’ 天津’) (8) 把全部红色零件的颜色改成蓝色。
UPDATE P SET COLOR='蓝' WHERE COLOR='红' ;
(9) 由S5供给J4的零件P6改为由S3供应,请作必要的修改。
UPDATE SPJ SET SNO='S3' WHERE SNO='S5' AND JNO='J4' AND PNO='P6'; (10) 从供应商关系中删除S2的记录,并从供应情况关系中删除相应的记录。
解析:注意删除顺序,应该先从 SPJ表中删除供应商S2所供应零件的记录,然后从从S表中删除S2。
DELET FROM SPJ WHERE SNO=‘S2’
DELET FROM S WHERE SNO=‘S2’
(11) 请将 (S2,J6,P4,200) 插入供应情况关系。
INSERT INTO SPJ(SNO, JNO, PNO, QTY) VALUES (‘S2’,‘J6’,‘P4’,200);
11. 请为三建工程项目建立一个供应情况的视图,包括供应商代码(SNO)、零件代码( PNO)、供应数量(QTY)。针对该视图完成下列查询: ( 1)找出三建工程项目使用的各种零件代码及其数量。 ( 2)找出供应商S1的供应情况。 答:建视图:
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) 找出供应商S1的供应情况。
SELECT PNO, QTY /* S1供应三建工程的零件号和对应的数量*/ FROM V_SPJ
WHERE SNO='S1';
第四章习题4、8、9、11
4、试述CC评估保证级划分的基本内容
浙江大学 浙大 远程教育 计算机科学与技术本科,数据库系统概论_离线作业
8.今有两个关系模式:
职工(职工号,姓名,年龄,职务,工资,部门号)
部门(部门号,名称,经理名,地址,电话号)
请用 SQL的GRANT和REVOKE语句(加上视图机制)完成以下授权定义或存取控制功能:
(a)用户王明对两个表有SELECT权力; GRANT SELECT ON 职工,部门
TO 王明;
(b)用户李勇对两个表有INSERT和DELETE权力; GRANT INSERT,DELETE ON 职工,部门 TO 李勇;
(c)每个职工只对自己的记录有SELECT权力; GRANT SELECT ON 职工 WHEN USER()= NAME TO ALL;
这里假定系统的 GRANT语句支持WHEN子句和USER()的使用。用户将自己的名字作为ID。注意,不同的系统这些扩展语句可能是不同的。读者应该了解你使用的DBMS产品的扩展语句。
(d)用户刘星对职工表有SELECT权力,对工资字段具有更新权力; GRANT SELECT,UPDATE(工资) ON 职工 TO 刘星;
(e)用户张新具有修改这两个表的结构的权力; GRANT ALTER TABLE ON 职工,部门 TO 张新;
(f)用户周平具有对两个表所有权力(读,插,改,删数据),并具有给其他用户授权的权力; GRANT ALL PRIVILIGES ON 职工,部门 TO 周平
WITH GRANT OPTION;
(g)用户杨兰具有从每个部门职工中SELECT最高工资、最低工资、平均工资的权力,他不能查看每个人的工资。
答:首先建立一个视图。然后对这个视图定义杨兰的存取权限。 CREATE VIEW 部门工资 AS
浙江大学 浙大 远程教育 计算机科学与技术本科,数据库系统概论_离线作业
SELECT 部门.名称,MAX(工资),MIN(工资),AVG(工资) FROM 职工,部门
WHERE 职工.部门号 = 部门. 部门号 GROUP BY 职工.部门号; GRANT SELECT ON 部门工资 TO 杨兰;
9.把习题8中(a)~(g) 的每一种情况,撤销各用户所授予的权力。 答: (a) REVOKE SELECT ON 职工,部门 FROM 王明; (b) REVOKE INSERT,DELETE ON 职工,部门 FROM 李勇;
(c) REOVKE SELECT ON 职工 WHEN USER()= NAME FROM ALL;
这里假定用户将自己的名字作为 ID,且系统的REOVKE语句支持WHEN子句,系统也支持USER()的使用。
(d) REVOKE SELECT,UPDATE ON 职工 FROM 刘星; (e) REVOKE ALTER TABLE ON 职工,部门 FROM 张新; (f) REVOKE ALL PRIVILIGES ON 职工,部门 FROM 周平; (g) REVOKE SELECT ON 部门工资 FROM 杨兰; DROP VIEW 部门工资;
11、理解并解释MAC机制中主体、客体、敏感度标记的含义。
主体是系统中的活动实体,既包括DBMS 所管理的实际用户,也包括代表用户的各进程。 客体是系统中的被动实体,是受主体操纵的,包括文件、基表、索引、视图等。对于主体和 客体,DBMS 为它们每个实例(值)指派一个敏感度标记(Label )。 敏感度标记被分成若干级别,例如绝密(Top Secret )、机密(Secret ) 可信( Confidential )、公开(PubliC )等。主体的敏感度标记称为许可证级别(ClearanCe 玫vel ) ,客体的敏感度标记称为密级(Classification Level )。
第五章习题2、5、6、7
2.数据库的完整性概念与数据库的安全性概念有什么区别和联系? 答:数据的完整性和安全性是两个不同的概念,但是有一定的联系。
前者是为了防止数据库中存在不符合语义的数据,防止错误信息的输入和输出,即所谓垃圾进垃圾出( Garbage In Garbage Out)所造成的无效操作和错误结果。
后者是保护数据库防止恶意的破坏和非法的存取。
也就是说,安全性措施的防范对象是非法用户和非法操作,完整性措施的防范对象是不合语义的数据。
5.RDBMS在实现参照完整性时需要考虑哪些方面? 答: RDBMS在实现参照完整性时需要考虑以下几个方面: 1)外码是否可以接受空值
2)删除被参照关系的元组时的考虑,这时系统可能采取的作法有三种: (a) 级联删除(CASCADES); (b) 受限删除(RESTRICTED); (c) 置空值删除(NULLIFIES)
3)在参照关系中插入元组时的问题,这时系统可能采取的作法有:
浙江大学 浙大 远程教育 计算机科学与技术本科,数据库系统概论_离线作业
(a)受限插入
(b)递归插入
4)修改关系中主码的问题 一般是不能用 UPDATE语句修改关系主码的。如果需要修改主码值,只能先删除该元组,然后再把具有新主码值的元组插入到关系中。
如果允许修改主码,首先要保证主码的唯一性和非空,否则拒绝修改。然后要区分是参照关系还是被参照关系。
6. 假设有下面两个关系模式:
职工(职工号,姓名,年龄,职务,工资,部门号),其中职工号为主码; 部门(部门号,名称,经理名,电话),其中部门号为主码;
用 SQL语言定义这两个关系模式,要求在模式中完成以下完整性约束条件的定义: 定义每个模式的主码;定义参照完整性;定义职工年龄不得超过 60岁。 答 定义部门
CREATE TABLE DEPT (Deptno NUMBER(2), Deptname CHAR(10), Manager CHAR(10), PhoneNumber Char(12) PRIMARY KEY (Deptno) ); 或:
CREATE TABLE DEPT (Deptno NUMBER(2), Deptname CHAR(10), Manager CHAR(10), PhoneNumber Char(12)
CONSTRAINT PK_SC PRIMARY KEY (Deptno) );
定义职工
CREATE TABLE EMP (Empno NUMBER(4), Ename CHAR(10), Age NUMBER(2) CHECK (Age<=60), Job CHAR(9),
Sal NUMBER(7,2),
Deptno NUMBER(2),
FOREIGN KEY (Deptno) REFERENCES DEPT(Deptno) ); 或:
CREATE TABLE EMP (Empno NUMBER(4), Ename CHAR(10), Age NUMBER(2),
CONSTRAINT C1 CHECK (Age<=60), Job CHAR(9),
Sal NUMBER(7,2), Deptno NUMBER(2), CONSTRAINT FK_DEPTNO FOREIGN KEY (Deptno) REFERENCES DEPT(Deptno) );
浙江大学 浙大 远程教育 计算机科学与技术本科,数据库系统概论_离线作业
7.关系系统中,当操作违反实体完整性、参照完整性和用户定义的完整性约束条件时,一般是如何分别进行处理的? 答:对于违反实体完整性和用户定义的完整性的操作一般都采用拒绝执行的方式进行处理。而对于违反参照完整性的操作,并不都是简单地拒绝执行,有时要根据应用语义执行一些附加的操作,以保证数据库的正确性。