数据库原理天津大学作业答案
数据库原理复习题
一、名词解释
1. 概念模式
是数据库中全部数据的整体逻辑结构的描述。它由若干个概念记录类型组成。 概念模式不仅要描述概念记录类型,还要描述记录间的联系、操作、数据的完整性、安全性等要求。
2. 复制透明性
即用户不必关心数据库在网络中各个结点的数据库复制情况,更新操作引起的波及由系统去处理。
3. 事务的原子性
一个事务对数据库的操作是一个不可分割的操作系列,事务要么完整地被全部执行,要么全部不执行
4.实体完整性规则
这条规则要求关系中元组在组成主键的属性上不能有空值。 如果出现空值,那么主键值就起不了唯一标识元组的作用。
5. 嵌入式SQL
将SQL 语句嵌入高级程序设计语言中使用, 发挥高级语言过程化处理能力强的特点。
6. 分片透明性
分片透明性是最高层次的分布透明性,是指用户或应用程序只对全局关系进行操作而不必考虑数据的分片。
7.完全函数依赖
在关系R (U ,F )中,如果X → Y,而对于X 的任何真子集X' ,Y 对X' 均不存在函数依赖,称Y 对X 完全依赖。
8. 丢失更新
当两个或以上的事务同时修改同一数据集合时, 由于并发处理, 使得某些事务对此数据集合的修改被忽视了
9. S封锁
共享型封锁。如果事务T 对某数据R 加上S 封锁,那么其它事务对数据R 的X 封锁便不能成功, 而对数据R 的S 封锁请求可以成功。这就保证了其他事务可以读取R 但不能修改R ,直到事务T 释放S 封锁。
10. 参照完整性
若属性(或属性组)F ,是基本关系R 的外码,它与基本关系S 的主码Ks 对应(R 、S 不一定是不同的关系),则对于R 中每个元组在F 上的值必须为:或者取空值,或者等于S 中某个元组的主码值。
11. 3NF
若关系模式R中不存在候选码X ,属性组Y ,以及非主属性组Z (Z 不是Y 的子集),使得X→Y,Y→Z,Y→X成立,则R 3NF 。
二、简答题
1. 为什么视图被称为虚表?基本表与视图的区别是什么?
答:
因为数据库中只存储有关视图的定义而不存储视图所对应的数据,这些数据仍存放在导出视图的基本表中,所以视图被称为虚表。基本表是实际独立存放在数据
库中的表,是实表。
2. 简述数据库设计过程中输入的主要内容。
答:
1) 总体信息需求
2) 处理需求
3)DBMS 的特征
4) 硬件和操作系统的特征
3. 数据库并发操作主要解决哪三个问题?如何保证并行操作的可串行性。 答:
1) 丢失更新问题
2) 数据不一致分析问题
3) 读“脏”数据问题
对任何数据集合进行读写操作之前,事务首先应获得对此数据集合的封锁,在释放一个封锁之后,事务不再获得任何其他封锁
4. 在关系数据库中能完全消除数据冗余吗?
答:
不能。要实现关系数据库中表与表之间的联系,必须通过公共属性来完成,这些公共属性可能是一个表的主键,也可能是另一个表的外键,有相应的参照完整性规则来保证表之间的联系。所以关系数据库中存在数据冗余,但能控制数据的冗余度。
5. 什么是“运行记录优先原则”?其作用是什么?
答:
在数据库系统中,写一个修改到数据库中和写一个表示这个修改的登记记录 到日志文件中是两个不同的操作,在这两个操作之间有可能发生故障。这时,如果先写了数据库修改,而在运行记录中没有登记这个修改,则以后就无法恢复这个修改,那么以后也就无法撤消这个修改。为了安全起见,采用“运行记录优先原则”。它包括两点:
(1)至少要等相应运行记录已经写入“日志”文件后,才能允许事务往数据库中写记录。
(2)直至事务的所有运行记录都已写入运行“日志”文件后,才能允许事务完成“END TRANSACTION”处理。
6. 死锁的发生是坏事还是好事? 试说明理由。如何解除死锁状态?
答:
死锁的发生即是坏是又是好事。
(1)使并发事务不能继续执行下去,造成时间开销却不产生结果。
(2)在某些时候我们要利用它来解决更新操作导致的数据库不一致状态。 解除死锁状态:抽出某个事务作为牺牲品,把它撤消,做回退操作,解除它的所有封锁,并恢复到初始状态。
7.什么是数据库的恢复?数据库恢复的基本原则是什么?
答:
当数据库系统受到破坏时,通过恢复技术,使数据库恢复到遭到破坏之前的正确状态。数据库恢复的基本原则是重复存储,即“冗余”。
8. 简述数据库概念模型的主要特点。
答:
1)对现实世界的抽象和概括,能真实,充分的反映现实世界的事物和事物之间的联系
2)简洁、明晰、独立于计算机系统、便于理解
3)易于变动和修改
4)易于向给定的数据库逻辑模式转换。
9. 简述数据库恢复的几种方法。
答:
1)定期对整个数据库进行复制与转储
2)建立日志文件
3)当故障发生后,使用日志文件对数据库进行恢复
10. 数据独立性与数据联系这两个概念有什么区别?
答:
数据独立性是指应用程序与数据之间相互独立,不受影响。
数据联系是指同一记录内部各字段间的联系,以及记录之间的联系。
11. 简述在SQL 中,DELETE 语句与DROP TABLE的区别。
答:
DELETE 的作用是删除表中的元组,表的模式依然存在,而DROP TABLE 是将表的结构和元组全部删除,表被删除(DROP)后就不再存在了。
12. 登记日志文件时,为什么必须先写日志文件,后写数据库。
答:
写日志文件与写数据库是两个不同的操作。在这两个操作中可能出现故障,若先写数据库而后续的写日志的操作时出现了故障,则不能对数据库进行恢复。反之若先写日志文件,但没有对数据库进行修改,则恢复时只是进行一次没有必要的undo 而已,不会影响数据库的正确性,所以一定要先写日志文件,后写数据库。
13. 试述关系和关系模式之间的联系和区别。
答:
a )关系模式是关系的型,而关系是前者的值。
b )前者是静态的,后者是动态的。
c )可将二者统称为关系。
故,联系:关系实际上是关系模式上某一时刻的状态或内容;
区别:关系模式是静态而稳定的,关系是随时间不断变化的,因为关系
操作在不断的更新着数据库和数据。
14. 简要说明数据与程序的物理独立性;数据与程序的逻辑独立性;数据库系统具有数据与程序的独立性。
答:
a )当数据库的存储结构改变了(例如选用了另一种存储结构) ,由数据库管理员对模式/内模式映象作相应改变,可以使模式保持不变,从而应用程序也不必改变。保证了程序与数据的物理独立性, 简称数据的物理独立性。
b )当需要改变模式时(例如增加新的关系、新的属性、改变属性的数据类型、改变数据间的联系等) ,由数据库管理员对各个外模式/模式的映象作相应改变,而使外模式保持不变,从而不必修改或重写应用程序改。而应用程序是依据数据的外模式编写的,保证了数据与程序的逻辑独立性。简称数据的逻辑独立性。
c )特定的应用程序是在外模式描述的数据结构上编制的,它依赖于特定的外模式,与数据库的模式和存储结构独立。不同的应用程序有时可以共用同一个外模式。数据库的二级映象保证了数据库外模式的稳定性,从而从底层保证了应用程序的稳定性,除非应用需求本身发生变化,否则应用程序一般不需要修改。
15.试述数据库系统的三级模式结构,以及这种结构的优点。
答:
操作、越权使用数据库利用计算机进行犯罪活动等等,都会破坏数据库中的数据。数据库保护就是要排除和防止对于数据库的干扰和破坏,确保数据库中的数据安全可靠、正确、有效,以及在遇到破坏时能尽快恢复。主要是通过安全性控制、完整性控制、并发性控制数据库恢复这四方面进行的。
三、试叙述分布式DBMS 的功能。
答:主要功能有:
(1)接受用户请求,并判定把它送到哪里,或必须访问哪些计算机才能满足该请求。
(2)访问网络数据字典,或者至少了解如何请求和使用其中的信息。
(3)如果目标数据存储于系统的多个计算机上,就必须进行分布式处理。
(4)通信接口功能,在用户、局部DBMS 和其他计算机的DBMS 之间进行协调。
(5)在一个异构型分布式处理环境中,还需提供数据和进程移植的支持。这里的异构型是指各个场地的硬件、软件之间存在一定差别。
四、简述数据字典的内容和作用
答:主要功能有:
(1)接受用户请求,并判定把它送到哪里,或必须访问哪些计算机才能满足该请求。
(2)访问网络数据字典,或者至少了解如何请求和使用其中的信息。
(3)如果目标数据存储于系统的多个计算机上,就必须进行分布式处理。
(4)通信接口功能,在用户、局部DBMS 和其他计算机的DBMS 之间进行协调。
(5)在一个异构型分布式处理环境中,还需提供数据和进程移植的支持。这里的异构型是指各个场地的硬件、软件之间存在一定差别。
五、
1. 对于教学数据库的三个基本表
学生 S(S#,SNAME,AGE,SEX)
学习 SC(S#,C#,GRADE)
课程 C(C#,CNAME,TEACHER)
试用SQL 语句表示:检索WANG 同学不学的课程号。
答:
SELECT C#
FROM C
WHERE C# NOT IN
(SELECT C#
FROM SC
WHERE S# IN
SELECT S#
FROM S
WHERE SNAME=‘WANG’)
2. 建立一个学生关系表Student ,表中有5个字段:学号Sno (字符型)、姓名Sname (字符型)、性别Sex (字符型)、年龄Age (整型)、系别Dept (字符型),其中Sno 是关系的码;建立一个学生选课关系表SC ,表中有3个字段:学号Sno (字符型)、课程号Cno (字符型)、成绩Grade (数值型),其中Sno 、Cno 是关系的码,用SQL 语言完成下列功能:
1)建立学生关系表Student 和学生选课关系表SC 。
2)查询计算机系(’CS ’)所有同学的姓名和各科成绩。
3)添加一个学生记录,学号为20020003,姓名为吴刚,性别为男,年龄为19岁,所在系为计算机系。
4)逻辑删除李江同学的相关记录。
答:① CREATE TABLE Student (Sno CHAR(8) NOT NULL UNIQUE,
Sname CHAR(18),
Sex CHAR(2),
Age INT,
Dept CHAR(20);
CREATE TABLE SC (Sno CHAR(5) NOT NULL,
Cno CHAR(5) NOT NULL,
Grade SMALLINT,
② SELECT Sname, Cno, Grade FROM Student, SC WHERE Sdept=’ CS ’ AND Student.Sno= SC.Sno;
③ INSERT INTO Student VALUES (‘20020003’, ‘吴刚’, ’男’, 19 , ’计算机系’); ④ DELETE FROM SC WHERE Sname=’李江’ AND Student.Sno= SC.Sno;
DELETE FROM STUDENT WHERE Sname=’李江’;
3. 用SQL 语句实现如下操作:
设有关系模式:Employees(ssn, name, sex, age, department)
其中:ssn 为员工号,name 为姓名,sex 为性别,age 为年龄,department 为工作部门。
①用SQL 语句的数据定义语句,建立Employees 表。其中员工号不能为空且其值是唯一的。
②用SQL 语句的插入语句,将一名新员工的员工信息进行记录(员工号:07216008,姓名:笑笑,性别:女,年龄:24,所在部门:CS )。
③用SQL 语句的修改语句,将员工笑笑的年龄改为26。
④用SQL 语句的查询语句,查询全体员工的姓名、性别和所在的部门。 ⑤用SQL 语句的控制语句,把对Employees 表的查询权限授予用户simon 。 答案:
1. ①create table Employees(
ssn number not null unique,
name char(10),
sex char(2),
age number,
department char(50))
②insert into Employees
values(07217008, ‘笑笑’, ‘女‘, 24, ‘CS’)
③update Employees
set age = 26
where name = ‘笑笑’
④select name, sex, department
from Employees
⑤grant select on table Employees to simon
4. 有一学生基本信息表,其结构如下:
create table xs
( 学号 char(6) not null ,
姓名 char(8) not null,
专业名 char(10) ,
性别 bit not null ,
出生时间 smalldatetime ,
入学时间 smalldatetime not null default(getdate()),
总学分 decimal(4,1),
备注 text
)
按照要求写出查询的SQL 语句。
1)查看xs 表中总分在50分以上的前5名学生情况
2)对表xs 中的总学分,求所有学生的平均学分
3)对表xs 中的总学分,求计算机专业学生的平均学分。
4)对表xs, 统计女生学生人数。(设性别为0的代表女性)
5)对表xs 中,统计专业个数。
答案:
select top 5 * from xs where 总学分>=50
1)select avg(总学分) as 平均学分 from xs
2)select avg(总学分) as 平均学分 from xs where 专业名=‘计算机’
3)select count(*) as 女生人数 from xs where 性别=0
4)select count(distinct 专业名) as 专业个数 from xs
5. 设有如下关系模式:
S(SNO, SNAME, CITY);
P(PNO, PNAME, COLOR, WEIGHT);
J(JNO, JNAME, CITY);
SPJ(SNO,PNO, JNO, QTY)
供应商表S 由供应商号SNO 、供应商姓名SNAME ,供应商所在城市CITY 组成,零件表P 由零件号PNO 、零件名称PNAME 、零件颜色COLOR ,零件重量WEIGHT 组成,工程项目表J 由项目号JNO 、项目名JNAME 、所在城市CITY 组成,供应情况表由供应商号SNO ,零件号PNO 、项目号JNO 、供应数量QTY 组成。
(1) 用SQL 语句创建表S
(2) 用SQL 语句完成如下查询:
a .求供应工程J1零件的供应商号码SNO
b .求供应工程J1零件P1的供应商号码SNO
c .求供应工程J1零件为红色的供应商号码SNO :
答案:
a) CREATE TABLE S (
SNO CHAR (10) NOT NULL UNIQUE,
SNAME CHAR (30),
CITY CHAR (30));
b) a .SELECT SNO FROM SPJ WHERE JNO =’J1’
b .SELECT SNO FROM SPJ WHERE JNO = ’J1’ AND PNO = ‘P1’;
c .SELECT SNO FROM SPJ, P WHERE JNO = ‘J1’ AND P. PNO = SPJ.PNO AND P.COLOR = ‘RED’;