1.试述数据、数据库、数据库系统、数据库管理系统的概念。
答: ( l)数据:描述事物的符号记录称为数据。数据的种类有数字、文字、图形、图像、声音、正文等。( 2 )数据库:数据库是长期储存在计算机内的、有组织的、可共享的数据集合。数据库中的数据按一定的数据模型组织、描述和储存,具有较小的冗余度、较高的数据独立性和易扩展性,并可为各种用户共享。( 3 )数据库系统:数据库系统是指在计算机系统中引入数据库后的系统构成,一般由数据库、数据库管理系统(及其开发工具)、应用系统、数据库管理员构成.( 4 )数据库管理系统:数据库管理系统是位于用户与操作系统之间的一层数据管理软件,用于科学地组织和存储数据、高效地获取和维护数据。 DBMS 的主要功能包括数据定义功能、数据操纵功能、数据库的运行管理功能、数据库的建立和维护功能。 2.试述数据库系统的特点。
答:( l )数据结构化数据库系统实现整体数据的结构化,这是数据库的主要特征之一,也是数据库系统与文件系统的本质区别. ( 2 )数据的共享性高,冗余度低,易扩充数据库的数据不再面向某个应用而是面向整个系统,因此可以被多个用户、多个应用以多种不同的语言共享使用。
( 3 )数据独立性高数据独立性包括数据的物理独立性和数据的逻辑独立性.( 4 )数据由 DBMS 统一管理和控制数据库的共享是并发的共享,即多个用户可以同时存取数据库中的数据甚至可以同时存取数据库中同一个数据。为此, DBMS 必须提供统一的数据控制功能,包括数据的安全性保护、数据的完整性检查、并发控制和数据库恢复。
3.什么叫数据与程序的物理独立性?什么叫数据与程序的逻辑独立性?为什么数据库系统具有数据与程序的独立性?
答:数据与程序的逻辑独立性:当模式改变时,由数据库管理员对各个外模式/模式的映像做相应改变,可以使外模式保持不变,从而应用程序不必修改,保证了数据与程序的逻辑独立性。
数据与程序的物理独立性:当数据库的存储结构改变了,由数据库管理员对模式/内模式映像做相应改变,可以使模式保持不变,从而应用程序也不必改变,保证了数据与程序的物理独立性,简称数据的物理独立性.
数据库管理系统在三级模式之间提供的两层映像保证了数据库系统中的数据能够具有较高的逻辑独立性和物理独立性。 4。试述视图的优点。
答: ( l )视图能够简化用户的操作; ( 2 )视图使用户能以多种角度看待同一数据; ( 3 )视图对重构数据库提供了一定程度的逻辑独立性; ( 4 )视图能够对机密数据提供安全保护。 5.试述事务的概念及事务的4 个特性。恢复技术能保证事物的哪些特征?
答:事务是用户定义的一个数据库操作序列,这些操作要么全做要么全不做,是一个不可分割的工作单位。
事务具有4 个特性:原子性、一致性、隔离性和持续性。 恢复技术能保证的事物特征有:原子性、一致性、持续性。
6。数据库运行中可能产生的故障有哪几类?哪些故障影响事务的正常执行?哪些故障破坏数据库数据?
答:数据库系统中可能发生各种各样的故障,大致可以分以下几类: (1)事务内部的故障;(2)系统故障;(3)介质故障;(4)计算机病毒. 事务故障、系统故障和介质故障影响事务的正常执行; 介质故障和计算机病毒破坏数据库数据。
7.针对不同的故障,试给出恢复的策略和方法。(即如何进行事务故障的恢复?系统故障的恢复?介质故障恢复?) 答:事务故障的恢复:
事务故障的恢复是由DBMS DBMs 执行恢复步骤是: 自动完成的,对用户是透明的。
(1)反向扫描文件日志,查找该事务的更新操作;
(2)对该事务的更新操作执行逆操作,即将日志记录中“更新前的值”写入数据库; (3)继续反向扫描日志文件,做同样处理;
(4)如此处理下去,直至读到此事务的开始标记,该事务故障的恢复就完成了。 系统故障的恢复: 系统的恢复步骤是:
(1)正向扫描日志文件,找出在故障发生前已经提交的事务队列(REDO 队列)和未完成的事务队列(UNDO 队列)。
(2)对撤销队列中的各个事务进行UNDO 处理。进行UNDO 处理的方法是,反向扫描日志文件,对每个UNDO 事务的更新操作执行逆操作,即将日志记录中“更新前的值\"Before Image )写入数据库。
( 3 )对重做队列中的各个事务进行REDO 处理。
进行REDO 处理的方法是:正向扫描日志文件,对每个REDO 事务重新执行日志文件登记的操作.即将日志记录中“更新后的值”Afte , Image )写入数据库。 介质故障的恢复:
介质故障是最严重的一种故障.
恢复方法是重装数据库,然后重做已完成的事务。具体过程是:
( 1 ) DBA 装入最新的数据库后备副本(离故障发生时刻最近的转储副本), 使数据库恢复到转储时的一致性状态;
( 2 ) DBA 装入转储结束时刻的日志文件副本;
( 3 ) DBA 启动系统恢复命令,由DBMS 完成恢复功能,即重做已完成的事务. 8..什么是封锁?基本的封锁类型有几种?试述它们的含义.
答:封锁就是事务 T 在对某个数据对象例如表、记录等操作之前,先向系统发出请求,对其加锁.加锁后事务 T 就对该数据对象有了一定的控制,在事务 T 释放它的锁之前,其他的事务不能更新此数据对象。封锁是实现并发控制的一个非常重要的技术。
基本的封锁类型有两种:排它锁( Exclusive Locks ,简称 x 锁)和共享锁 ( Share Locks,简称 S 锁)。排它锁又称为写锁。若事务 T 对数据对象 A 加上 X 锁,则只允许 T 读取和修改 A ,其他任何事务都不能再对 A 加任何类型的锁,直到 T 释放 A 上的锁。这就保证了其他事务在 T 释放 A 上的锁之前不能再读取和修改 A 。共享锁又称为读锁。若事务 T 对数据对象 A 加上 S 锁,则事务 T 可以读 A但不能修改 A ,其他事务只能再对 A 加 S 锁,而不能加 X 锁,直到 T 释放 A 上的 S 锁。这就保证了其他事务可以读 A ,但在 T 释放 A 上的 S 锁之前不能对 A 做任何修改。 9。。什么是活锁?什么是死锁? 如果事务 T1 封锁了数据 R ,事务T2又请求封锁 R ,于是T2等待。T3也请求封锁 R ,当 T1 释放了 R 上的封锁之后系统首先批准了T3的请求,T2仍然等待。然后T4又请求封锁 R ,当T3释放了 R 上的封锁之后系统又批准了T4的请求 … … T2有可能永远等待,这就是活锁的情形。 如果事务 T1 封锁了数据 R1 ,T2封锁了数据R2,然后 T1 又请求封锁R2,因T2已封锁了R2,于是 T1 等待T2释放R2上的锁。接着T2又申请封锁 R1 ,因 T1已封锁了 R1 ,T2也只能等待 T1 释放 R1 上的锁.这样就出现了 T1
在等待T2,而T2又在等待 T1的局面, T1和T2两个事务永远不能结束,形成死锁. 10。。试述活锁的产生原因和解决方法.
答:活锁产生的原因:当一系列封锁不能按照其先后顺序执行时,就可能导致一些事务无限期等待某个封锁,从而导致活锁。避免活锁的简单方法是采用先来先服务的策略.当多个事务请求封锁同一数据对象时,封锁子系统按请求封锁的先后次序对事务排队,数据对象上的锁一旦释放就批准申请队列中第一个事务获得锁。 11.给出预防死锁的若干方法。
答:防止死锁的发生其实就是要产生死锁的条件。预防死锁通常有两种方法.
(1)一次封锁法,要求每个事物必须一次将所有要使用的数据全部加锁,否则就不能执行。 (2)顺序封锁法,预先对数据对象规定一个封锁的顺序,所有事物都必须按这个顺序。
(二)关系代数
1。设有一个SPJ数据库,包括S,P,J,SPJ四个关系模式: 1)求供应工程J1零件的供应商号码SNO: πSno(σjno=‘J1’(SPJ))
2)求供应工程J1零件P1的供应商号码SNO: πSno(σSno=‘J1’∧Pno='P1’(SPJ))
3)求供应工程J1零件为红色的供应商号码SNO: πSno(σPno=‘P1‘ (σCOLOR=’红‘ (P)∞SPJ))
4)求没有使用天津供应商生产的红色零件的工程号JNO: πJno(SPJ)— πJNO(σcity=‘天津'∧Color=‘红‘ (S∞SPJ∞P) 5)求至少用了供应商S1所供应的全部零件的工程号JNO: πJno,Pno(SPJ)÷ πPno(σSno=‘S1‘ (SPJ))
2.关系代数的基本运算有哪些 ? 如何用这些基本运算来表示其他运算?
答:并、差、笛卡尔积、投影和选择5种运算为基本的运算.其他3种运算,即交、连接和除,均可以用这5种基本运算来表达。
(三)SQL结构化查询
1。针对习题3中的四个表试用SQL语言完成以下各项操作: (1)找出所有供应商的姓名和所在城市。 SELECT SNAME,CITY
FROM S
(2)找出所有零件的名称、颜色、重量.
SELECT PNAME,COLOR,WEIGHT FROM P
(3)找出使用供应商S1所供应零件的工程号码. SELECT DISTINCT JNO
FROM SPJ
WHERE SNO='S1'
(4)找出工程项目J2使用的各种零件的名称及其数量。
SELECT PNAME,QTY FROM SPJ,P
WHERE P.PNO=SPJ.PNO AND SPJ.JNO=’J2'
(5)找出上海厂商供应的所有零件号码。
SELECT PNO FROM SPJ,S
WHERE S.SNO=SPJ.SNO AND CITY=’上海’
(6)出使用上海产的零件的工程名称。
SELECT JNAME FROM SPJ,S,J
WHERE S.SNO=SPJ。SNO AND S.CITY='上海’ AND J。JNO=SPJ。JNO
(7)找出没有使用天津产的零件的工程号码. 注意: SELECT DISINCT JNO
FROM SPJ
WHERE JNO NOT IN (SELECT DISTINCT JNO FROM SPJ,S
WHERE S。SNO=SPJ.SNO AND S.CITY=’天津') 适用于JNO是不唯一的情况. 注意: SELECT DISTINCT JNO FROM SPJ,S
WHERE S。SNO=SPJ。SNO AND S。CITY<〉'天津'
适用于JNO是唯一的情况
(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的记录,并从供应情况关系中删除相应的记录.
A、DELETE
FROM S
WHERE SNO=’S2’ B、DELETE FROM SPJ 2。请为三建工程项目建立一个供应情况的视图,包括供应商代码(SNO)、零件代码(PNO)、供应数量(QTY)。 CREATE VIEW VSP AS
SELECT SNO,PNO,QTY FROM SPJ,J
WHERE SPJ。JNO=J。JNO AND J。JNAME=’三建’
针对该视图VSP完成下列查询:
(1)找出三建工程项目使用的各种零件代码及其数量。 SELECT DISTINCT PNO,QTY FROM VSP
(2)找出供应商S1的供应情况. SELECT DISTINCT * FROM VSP
WHERE SNO=’S1’ 3.今有两个关系模式:
职工(职工号,姓名,年龄,职务,工资,部门号) 部门(部门号,名称,经理名,地址,电话号)
请用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;
( 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 杨兰;
4。把习题8 中(1)---(7)的每一种情况,撤销各用户所授予的权力 (1) REVOKE SELECT
ON 职工,部门 FROM 王明;
(2) REVOKE INSERT , DELETE ON 职工,部门 FROM 李勇;
(3) REOVKE SELECT
ON 职工
WHEN USER ( ) =NAME FROM ALI ;
(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 部门工资;
5。假设有下面两个关系模式:职工(职工号,姓名,年龄,职务,工资,部门号),其中职工号为主码;部门(部门号,名称,经理名,电话),其中部门号为主码。用 sQL 语言定义这两个关系模式,要求在模式中完成以下完整性约束条件的定义:定义每个模式的主码;定义参照完整性;定义职工年龄不得超过 60 岁。 答
CREATE TABLE DEPT
(Deptno NUMBER(2), Deptname VARCHAR(10), Manager VARCHAR(10), PhoneNumber Char(12)
CONSTRAINT PK_SC RIMARY KEY(Deptno)); CREATE TABLE EMP
(Empno NUMBER(4), Ename VARCHAR(10), Age NUMBER(2),
CONSTRAINT C1 CHECK ( Aage<=60), Job VARCHAR(9), Sal NUMBER(7,2), Deptno NUMBER(2),
CONSTRAINT FK_DEPTNO FOREIGN KEY(Deptno)
REFFERENCES DEPT(Deptno));
6。建立一个关于系、学生、班级、学会等诸信息的关系数据库。 学生:学号、姓名、出生年月、系名、班号、宿舍区。 班级:班号、专业名、系名、人数、入校年份。 系:系名、系号、系办公地点、人数。
学会:学会名、成立年份、办公地点、人数。
语义如下:一个系有若干专业,每个专业每年只招一个班,每个班有若干学生。一个系的学生住在同一宿舍区。每个学生可参加若干学会,每个学会有若干学生。学生参加某学会有一个入会年份。
请给出关系模式,写出每个关系模式的极小函数依赖集,指出是否存在传递函数依赖,对于函数依赖左部是多属性的情况讨论函数依赖是完全函数依赖,还是部分函数依赖。指出各关系模式的候选码、外部码,有没有全码存在? 解:(1)关系模式如下:
学生:S(Sno,Sname,Sbirth,Dept,Class,Rno) 班级:C(Class,Pname,Dept,Cnum,Cyear) 系:D(Dept,Dno,Office,Dnum)
学会:M(Mname,Myear,Maddr,Mnum) (2)每个关系模式的最小函数依赖集如下:
A、学生S (Sno,Sname,Sbirth,Dept,Class,Rno) 的最小函数依赖集如下:
SnoSname,SnoSbirth,SnoClass,SnoRno ClassDept,
DEPTRno 传递依赖如下:
由于SnoDept,而DeptSno ,DeptRno(宿舍区) 所以Sno与Rno之间存在着传递函数依赖。
由于ClassDept,Dept Class,DeptRno
所以Class与Rno之间存在着传递函数依赖。 由于SnoClass,ClassSno,ClassDept
所以Sno与Dept之间存在着传递函数依赖.
B、班级C(Class,Pname,Dept,Cnum,Cyear)的最小函数依赖集如下: ClassPname,ClassCnum,ClassCyear,PnameDept。 由于ClassPname,PnameClass,PnameDept 所以C1ass与Dept之间存在着传递函数依赖.
C、系D(Dept,Dno,Office,Dnum)的最小函数依赖集如下:
DeptDno,Dept Office,Dept Dnum DnoDept,DnoOffice,DnoDnum
根据上述函数依赖可知,Dept与Office,Dept与Dnum之间不存在传递依赖。 D、学会M(Mname,Myear,Maddr,Mnum)的最小函数依赖集如下: MnameMyear,MnameMaddr,MnameMnum 该模式不存在传递依赖。
(3)各关系模式的候选码、外部码,全码如下:
A、学生S候选码:Sno;外部码:Dept、Class;无全码 B、班级C候选码:Class;外部码:Dept;无全码 C、系D候选码:Dept或Dno;无外部码;无全码 D、学会M候选码:Mname;无外部码;无全码
(四)名词解释
1.定义并解释以下术语:模式、外模式、内模式、 DDL 、 DML
答:模式、外模式、内模式,亦称逻辑模式,是数据库中全体数据的逻辑结构和特征的描述,是所有用户的公共数据视图.模式描述的是数据的全局逻辑结构。外模式涉及的是数据的局部逻辑结构,通常是模式的子集.内模式,亦称存储模式,是数据在数据库系统内部的表示,即对数据的物理结构和存储方式的描述。 DDL :数据定义语言,用来定义数据库模式、外模式、内模式的语言. DML :数据操纵语言,用来对数据库中的数据进行查询、插入、删除和修改的语句.
3。理解并给出下列术语的定义: 函数依赖、部分函数依赖、完全函数依赖、传递依赖、候选码、主码、外码、全码(All-key )、1 NF 、2NF 、3NF 、BCNF 、多值依赖、4NF 。
定义1:设R(U)是属性集U上的关系模式.X,Y是属性集U的子集。若对于R(U)的任意一个可能的关系r,r中不可能存在两个元组在X上的属性值相等,而在Y上的属性值不等,则称X函数确定Y或Y函数依赖于X,记作XY。(即只要X上的属性值相等,Y上的值一定相等。) 术语和记号:
XY,但Y不是X的子集,则称XY是非平凡的函数依赖。若不特别声明,总是讨论非平
凡的函数依赖。
XY,但Y是X的子集,则称XY是平凡的函数依赖。 若XY,则X叫做决定因素(Determinant). 若XY,YX,则记作XY。
若Y不函数依赖于X,则记作X Y。
定义2:在R(U)中,如果 XY,并且对于X的任何一个真子集X',都有X' Y,则称Y
对X完全函数依赖
若XY,但Y不完全函数依赖于X,则称Y对X部分函数依赖
定义3:若关系模式R的每一个分量是不可再分的数据项,则关系模式R属于第一范式(1NF)。 定义4:若关系模式R∈1NF,且每一个非主属性完全函数依赖于码,则关系模式R∈2NF 。(即1NF消除了非主属性对码的部分函数依赖则成为2NF).
定义5:关系模式R 中若不存在这样的码X、属性组Y及非主属性Z(Z不是Y的子集)使得XY,Y X,Y Z成立,则称R∈3NF。
定义6:关系模式R〈U,F>∈1NF .若XY且Y不是X的子集时,X必含有码,则R〈U,F〉∈BCNF.
定义7:关系模式R∈1NF,如果对于R的每个非平凡多值依赖XY(Y不是X的子集,Z=U—X—Y不为空),X都含有码,则称R∈4NF。
因篇幅问题不能全部显示,请点此查看更多更全内容