《2022年网络数据库管理系统 .pdf》由会员分享,可在线阅读,更多相关《2022年网络数据库管理系统 .pdf(24页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第1章数据库的概念 习题 1 名词解释:数据库、数据库管理系统、数据库系统答案:数据库是长期储存在计算机内的、有组织的、可共享的数据的集合。DBMS - DataBase Management System .是处理数据库访问的软件。 .提供数据库的用户接口。数据库系统 (DataBase System,DBS) , DBS 是指在计算机系统中引入数据库后的系统。带有数据库的整个计算机系统,包括硬件、软件、数据、人员。数据库系统(Database System ,简称 DBS )指数据库应用系统,系统构成包括数据库、数据库管理系统(及其开发工具)、应用系统、数据库管理员和用户 习题 2 数据库
2、系统阶段有和特点?答案:特点:有了数据库管理系统。面向全组织,面向现实世界。独立性较强。由 DBMS 统一存取,维护数据语义及结构 习题 3 结构数据模型三要素是什么,各什么含义?答案:数据模型通常由数据结构、数据操作和完整性约束组成。数据结构 -反映数据的静态特性数据操作 -反映数据的动态特性数据的完整性约束 -反映数据的约束条件 习题 4试述数据库的三级模式结构与两级映象答案:外模式是数据库用户(包括应用程序员和最终用户)能够看见和使用的局部数据的逻辑结构和特征的描述,是数据库用户的数据视图,是与某一应用有关的数据的逻辑表示。模式是数据库中全体数据的逻辑结构和特征的描述,是所有用户的公共数
3、据视图。它既不涉及数据的物理存储细节和硬件环境,也与具体的应用程序,与所使用的应用开发工具及高级程序设计语言(如C、Cobol、Fortran )无关。内模式也称存储模式(Storage Schema ) ,一个数据库只有一个内模式。它是数据物理结构和存储方式的描述,是数据在数据库内部的表示方式。例如,记录的存储方式是顺序存储、按照B 树结构存储、还是按Hash方法存储;索引按照什么方式组织;数据是否压缩存储,是否加密;数据的存储记录结构有何规定等。所形成的两级 映象外模式 / 模式映象:v 定义某一个外模式和模式之间的对应关系,映象定义通常包含在各外模式中。当模式改变时,修改此映象,使外模式
4、保持不变,从而应用程序可以保持不变,称为逻辑独立性。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 24 页 - - - - - - - - - 模式 / 内模式映象:v 定义数据逻辑结构与存储结构之间的对应关系。存储结构改变时,修改此映象,使模式保持不变,从而应用程序可以保持不变,称为物理独立性。 习题 5 从最终用户出发,数据库系统可分为哪几类?答案:?集中式 DBS?客户 / 服务器式DBS ?并行式 DBS ?分布式 DBS 习题 6 数据库管理系统的功能与组成答
5、案:数据库管理系统(Database Management System,简称DBMS )是位于用户与操作系统之间的一层数据管理软件。它的主要功能包括:1)数据定义功能数据定义语言(Data Definition Language,简称 DDL )2)数据操纵功能数据操纵语言(Data Manipulation Language,简称 DML )3)数据库的运行管理在系统运行过程中保障数据的安全性、完整性、一致性,并发使用,故障恢复。4)数据库的建立和维护功能DBMS 的组成 : 数据、元数据存储管理程序事务管理程序查询处理程序第 2 章实体联系模型 (ER Model) 习题 1 定义并解释
6、下列术语:实体、实体集、联系、联系集、属性、实体- 联系图、表、字段、记录答案:(略) 习题 2 说明强实体集与弱实体集之间的不同。答案:强实体集是可以单独存在的实体,而弱实体集中存在属性依赖于强实体集中的属性,一般情况下它们通过主码与外码联系起来。 习题 3 设某商业集团数据库有三个实体集。一是“商品”实体集,属性有商品号、商品名、规格、单价等;二是“商店”实体集,属性有商店号、商店名、地址等;三是“供应商”实体集,属性有供应商编号、供应商名、地址等。供应商与商品之间存在“供应”联系,每个供应商可供应多种商品,每种商品可向多个供应商订购,每个供应商供应每种商品有个月供应量;商店与商品间存在“
7、销售”联系,每个商店可销售多种商品,每种商品可在多个商店销售,每个商店销售每种商品有个月计名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 24 页 - - - - - - - - - 划数。试画出反映上述问题的ER图,并将其转换成关系模型。答案:ER图如下图所示。M M N N (2)这个 ER图可转换 5 个关系模式:供应商(供应商编号,供应商名,地址)商店(商店号,商店名,地址)商品(商品号,商品名,规格,单价)供应(供应商编号,商品号,月供应量)销售(商店号,商品号
8、,月计划数) 习题 4 假设要根据某大学的系、学生、班级、学会等信息建立一个数据库,一个系有若干专业, 每个专业每年只招一个班,每个班有若干学生。一个系的学生住在同一宿舍区。每个学生可以参加多个学会,每个学会有若干学生,学生参加某学会有个入会年份。试为该大学的系、学生、班级、学会等信息设计一个ER模型。答案:解:下图是ER图的一种设计方案。供应商编号供应商名商品供应商商店名地址规格单价商店号商店地址商品号月计划数月供应量商品名销售供应名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3
9、 页,共 24 页 - - - - - - - - - 习题5 假设某超市公司要设计一个数据库系统来管理该公司的业务信息。该超市公司的业务管理规则如下: 该超市公司有若干仓库,若干连锁商店,供应若干商品。每个商店有一个经理和若干收银员,每个收银员只在一个商店工作。每个商店销售多种商品,每种商品可在不同的商店销售。每个商品编号只有一个商品名称,但不同的商品编号可以有相同的商品名称。每种商品可以有多种销售价格。超市公司的业务员负责商品的进货业务。试按上述规则设计ER模型答案:解:下图是ER图的一种设计方案。设置专业系住宿宿舍区1 N N 1 招收班级N 有学生N 参加学会N M 1 1 N 具有销
10、售价格N 1 业务员M 库存仓库商品M 发货进货M N N N P 主管拥有商店收银员1 P 1 N 1 M N 销售经理名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 24 页 - - - - - - - - - 习题 6 E-R模型向关系模型转换的原则有哪些?举例说明. 答案:一个实体型转换为一个关系模式。实体的属性就是关系的属性。实体的码就是关系的码。一个 m:n 联系转换为一个关系模式。与该联系相连的各实体的码以及联系本身的属性均转换为关系的属性。而关系的码为各实
11、体码的组合。一个 1:n 联系可以转换为一个独立的关系模式,也可以与 n 端对应的关系模式合并。如果转换为一个独立的关系模式,则与该联系相连的各实体的码以及联系本身的属性均转换为关系的属性,而关系的码为n 端实体的码。4. 一个 1:1 联系可以转换为一个独立的关系模式,也可以与任意一端对应的关系模式合并。如果转换为一个独立的关系模式,则与该联系相连的各实体的码以及联系本身的属性均转换为关系的属性, 每个实体的码均是该关系的候选码。如果与某一端对应的关系模式合并,则需要在该关系模式的属性中加入另一个关系模式的码和联系本身的属性。5. 三个或三个以上实体间的一个多元联系转换为一个关系模式。与该多
12、元联系相连的各实体的码以及联系本身的属性均转换为关系的属性。而关系的码为各实体码的组合。6. 同一实体集的实体间的联系,即自联系, 也可按上述1:1 、1:n 和 m:n 三种情况分别处理。7. 具有相同码的关系模式可合并。以学生选课或其它例子来说明。第 3 章关系模型及oracle对象关系数据库 习题 1 关系模型的三要素?各要素的具体内容?答案:1 数据结构两维的扁平表2 数据操作关系代数语言关系演算语言SQL语言3 数据的完整性实体完整性参照完整性用户定义的完整性 习题 2 笛卡儿积、等值联接、自然联接三者之间有什么区别?答案:笛卡尔积是一个基本操作,而等值联接和自然联接是组合操作。设关
13、系 R的元数为r ,元组个数为m ;关系 S 的元数为s,元组个数为n。那么, RS 的元数为r+s ,元组个数为m n; R?S 的元数也是r+s ,但元组个数小于等于m n;ij 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 24 页 - - - - - - - - - R?S的元数小于等于r+s,元组个数也小于等于m n; 习题 3 设有关系R和 S :R A B C S A B C 3 6 7 3 4 5 2 5 7 7 2 3 7 2 3 4 4 3 计算 R
14、S,R-S,RS,RS,3,2(S),B5(R),R 22 S, RS。解:RS A B C RS A B C RS A B C 3 6 7 3 6 7 7 2 3 2 5 7 2 5 7 7 2 3 4 4 3 4 4 3 3 4 5 RS R.A R.B R.C S.A S.B S.C 3,2(S)C B 3 6 7 3 4 5 5 4 3 6 7 7 2 3 3 2 2 5 7 3 4 5 2 5 7 7 2 3 7 2 3 3 4 5 7 2 3 7 2 3 4 4 3 3 4 5 4 4 3 7 2 3 B 5(R)A B C R?S R.A R.B R.C S.A S.B S.C
15、7 2 3 7 2 3 3 4 5 4 4 3 R?S A B C 7 2 3 习题 4 设有三个关系:S(SNO ,SNAME ,AGE ,SEX ,SDEPT )SC ( SNO ,CNO ,GRADE )C(CNO ,CNAME ,CDEPT ,TNAME )试用关系代数表达式表示下列查询语句: 检索 LIU 老师所授课程的课程号、课程名。 检索年龄大于23 岁的男学生的学号与姓名。 检索学号为S3 学生所学课程的课程名与任课老师名。 检索至少选修LIU 老师所授课程中一门课的女学生姓名。223 AND SEX= M ; SELECT SNAME (联接查询方式)FROM S, SC,
16、C WHERE S.SNO=SC.SNO AND SC.CNO=C.CNO 视图V1 视图 V1 用户1 用户 2 用户4 用户3 基本表 B1 基本表 B2 基本表 B4 基本表 B3 存储文件 S1 存储文件 S2 存储文件 S4 存储文件 S3 SQL用户VIEW Base Stored file 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 9 页,共 24 页 - - - - - - - - - AND SEX= FAND TNAME= LIU; 或: SELECT SN
17、AME (嵌套查询方式)FROM S WHERE SEX= FAND SNO IN (SELECT SNO FROM SC WHERE CNO IN (SELECT CNO FROM C WHERE TNAME=LIU); 或: SELECT SNAME (存在量词方式)FROM S WHERE SEX= FAND EXISTS (SELECT * FROM SC WHERE SC.SNO=S.SNO AND EXISTS (SELECT * FROM C WHERE C.CNO=SC.CNO AND TNAME= LIU ); SELECT CNO FROM C WHERE NOT EXIS
18、TS (SELECT * FROM S, SC WHERE S.SNO=SC.SNO AND SC.CNO=C.CNO AND SNAME= WANG); SELECT DISTINCT X.SNO FROM SC AS X, SC AS Y WHERE X.SNO=Y.SNO AND X.CNO!=Y.CNO; SELECT CNO, CNAME FROM C WHERE NOT EXISTS (SELECT * FROM S WHERE NOT EXISTS (SELECT * FROM SC WHERE SNO=S.SNO AND CNO=C.CNO); SELECT DISTINCT
19、SNO FROM SC AS X WHERE NOT EXISTS (SELECT * FROM C WHERE TNAME= LIU名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 10 页,共 24 页 - - - - - - - - - AND NOT EXISTS (SELECT * FROM SC AS Y WHERE Y.SNO=X.SNO AND Y.CNO=C.CNO); 习题 4 设有两个基本表R(A,B,C)和 S( D,E,F), 试用 SQL查询语句表达下列关系
20、代数表达式:A(R)B=17(R) RS A,F(C=D(RS)答案:SELECT A FROM R; SELECT * FROM R WHERE B=17; SELECT * FROM R, S; SELECT A, F FROM R, S WHERE C=D; 习题 5 设有两个基本表R(A,B,C)和 S(A,B,C ) ,试用 SQL查询语句表达下列关系代数表达式:RS RS RS A,B(R) B,C(S)答案:(SELECT * FROM R) UNION (SELECT * FROM S); (SELECT * FROM R) INTERSECT (SELECT * FROM S
21、); (SELECT * FROM R) EXCEPT (SELECT * FROM S); (SELECT A, B FROM R) NATURAL INNER JOIN (SELECT B, C FROM S); 或SELECT R.A, R.B, S.C FROM R, S WHERE R.B=S.B; 习题 6 试用 SQL查询语句表达下列对教学数据库中三个基本表S、SC、C 的查询:统计有学生选修的课程门数。求选修C4课程的学生的平均年龄。求 LIU 老师所授课程的每门课程的学生平均成绩。统计每门课程的学生选修人数(超过10 人的课程才统计) 。要求输出课程号和选修人数,查询结果按人
22、数降序排列,若人数相同,按课程号升序排列。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 11 页,共 24 页 - - - - - - - - - 检索学号比WANG 同学大,而年龄比他小的学生姓名。检索姓名以WANG 打头的所有学生的姓名和年龄。在 SC中检索成绩为空值的学生学号和课程号。求年龄大于女同学平均年龄的男学生姓名和年龄。求年龄大于所有女同学年龄的男学生姓名和年龄。答案:SELECT COUNT(DISTINCT CNO) FROM SC; SELECT AVG(AGE
23、) FROM S, SC WHERE S.SNO=SC.SNO AND CNO=C4 ; SELECT SC.CNO, CNAME, AVG(GRADE) FROM SC, C WHERE SC.CNO=C.CNO AND TNAME=LIUGROUP BY SC.CNO; SELECT CNO, COUNT(SNO) FROM SC GROUP BY CNO HAVING COUNT(*)10 ORDER BY 2 DESC, CNO ASC; SELECT X.SNAME FROM S AS X, S AS Y WHERE Y.SNAME=WANGAND X.SNOY.SNO AND X.
24、AGE (SELECT AVG(AGE) FROM S WHERE SEX = F); SELECT SNAME, AGE FROM S WHERE SEX= M AND AGEALL(SELECT AGE FROM S 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 12 页,共 24 页 - - - - - - - - - WHERE SEX= F ); 习题 7 试用 SQL更新语句表达对教学数据库中三个基本表S、SC 、C的各个更新操作:往基本表S中插入一个学生元组(S9 ,
25、WU , 18) 。在基本表S 中检索每一门课程成绩都大于等于80 分的学生学号、姓名和性别,并把检索到的值送往另一个已存在的基本表STUDENT (SNO ,SNAME ,SEX ) 。在基本表SC中删除尚无成绩的选课元组。把 WANG 同学的学习选课和成绩全部删去。把选修MATHS 课不及格的成绩全改为空值。把低于总平均成绩的女同学成绩提高5。在基本表SC 中修改C4课程的成绩,若成绩小于等于75 分时提高5,若成绩大于75 分时提高4(用两个UPDATE 语句实现)。答案:INSERT INTO S(SNO, SNAME, AGE) VALUES( S9, WU , 18); INSER
26、T INTO STUDENT SELECT SNO, SNAME, SEX FROM S WHERE 80=ALL(SELECT GRADE FROM SC WHERE SNO=S.SNO); DELETE FROM SC WHERE GRADE IS NULL; DELETE FROM SC WHERE SNO IN (SELECT SNO FROM S WHERE SNAME=WANG); UPDATE SC SET GRADE=NULL WHERE GRADE60 AND CNO IN (SELECT CNO FROM C WHERE CNAME=MATHS ); UPDATE SC S
27、ET GRADE=GRADE*1.05 WHERE SNO IN (SELECT SNO FROM S WHERE SEX= F ) AND GRADE75; UPDATE SC SET GRADE=GRADE*1.05 WHERE CNO=C4 AND GRADE=75; 注:这两个语句顺序不能颠倒。 习题 8用 PL/SQL实现, 若 MARTIN 的佣金不足 1500元, 则将其工资提升为1500元。答案:declare v_ename varchar2(10):=MARTIN; v_comm m%type; begin select comm into v_comm from emp
28、where ename=v_ename; if nvl(v_comm,0)1500 then update emp set sal=1500 where ename=v_ename; end if ; -; can not be ignored! commit; end; / 习题 9用 pl/sql,在 EMP 表上编写一个触发器, 审计任何对 sal 和 comm 列的修改,若修改后比原值小, 则阻止修改, 若可以修改, 则将每次修改此两列的数据库用户,修改时间、 修改的用户和改前与该后此两列的值存入新建的一个审计表中,并然后测试其正常。答案:create table audit2 ( t
29、ime DATE, username varchar2(10), befor_sal number(7,2), befor_comm number(7,2), after_sal number(7,2), after_comm number(7,2) ); create or replace trigger emp_check before update of sal,comm on emp for each row when (old.dno is not null) 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整
30、理 - - - - - - - 第 14 页,共 24 页 - - - - - - - - - begin if (:new.sal = :old.sal) then raise_application_error(- 20000, , your changing action is denied ) ; else insert into audit2 values(sysdate,user,:old.sal,:m,:new.sal,:m); end if; end; - update emp set sal=2000 where empno=7654; 习题 9用 pl/sql,编写一个给职
31、工加工资的存储过程(该过程有两个参数,参数 1 为要加薪的部门号, 参数 2 为要加薪幅度, 部门号为 0 表示要给所有部门的职工都加),同时将该存储过程放入Test_Package 包中。答案:create or replace procedure raise_salary (deptno_id emp.deptno%type, increase real) is begin if(deptno_id=0) then update emp set sal=sal+increase; else update emp set sal=sal+increase where deptno=deptn
32、o_id; end if; end; /execute raise_salary(20,100) execute raise_salary(0,100) /*将上小题中存储过程放到一个包里去*/ -*package specification* create or replace package Test_Package as procedure raise_salary(deptno_id emp.deptno%type, increase real); end Test_Package; -*package body* create or replace package body Test
33、_Package as procedure raise_salary (deptno_id emp.deptno%type, increase real) is begin if(deptno_id=0) then update emp set sal=sal+increase; else update emp set sal=sal+increase where deptno=deptno_id; end if; end raise_salary; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - -
34、- - - 第 15 页,共 24 页 - - - - - - - - - end Test_Package; /test*execute Test_Package.raise_salary(0,2000);*/ declare begin Test_Package.raise_salary(0,2000); end; 习题 9 试用游标实现:为职工长工资。从最低工资长,工资总额限制在50 万元。Declare cursor c1 is select eno,sal from emp order by sal for update of sal ; emp_num number :=0 ; s
35、_sal number ; e_sal number ; e_eno char(3); Begin open c1; select sum(sal) into s_sal from emp ; while s_sal alter database archivelog 启动数据库时确定sql connect / as sysdba sql startup mount sql alter database archivelog - sql archive log start - sql alter database open 习题 7恢复的分类与物理/ 逻辑恢复的相互关系,应用场合?答案:详见本章 ppt 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 24 页,共 24 页 - - - - - - - - -