数据库系统概论期末复习【超实用】

若对你有帮助的话,记得点赞、关注我呦!

所用教材:《数据库系统概论(第5版)》王珊 萨师煊 编著 理论与实践相结合的好书

本文大部分写自同学,本作者稍加详解。感谢该同学,这些题目做透能拿高分!

B站同名up猪,欢迎关注我的账号鸽子不二的个人空间-鸽子不二个人主页-哔哩哔哩视频哔哩哔哩鸽子不二的个人空间,提供鸽子不二分享的视频、音频、文章、动态、收藏等内容,关注鸽子不二账号,第一时间了解UP主动态。icon-default.png?t=N7T8https://space.bilibili.com/204913846

博客总领目录请看这篇,绝对干货

软件工程专业大学四年学什么_大学近代史学分是多少-CSDN博客icon-default.png?t=N7T8https://blog.csdn.net/qq_41587612/article/details/104362661

一、简答题(来自第一章 绪论 课后题P34)10’

1. 试述数据、数据库、数据库管理系统、数据库系统的概念。

       数据:描述事物的符号记录。

       数据库:长期储存在计算机内、有组织的、可共享的大量数据的集合。

       数据库管理系统:位于用户与操作系统之间的一层数据管理软件。

       数据库系统:由数据库、数据库管理系统(及其应用开发工具)、应用程序和数据库管理员组成的存储、管理、处理和维护数据的系统。

7. 什么是概念模型?试述概念模型的作用。

       概念模型是现实世界到机器世界的一个中间层次。它用于信息世界的建模,是数据库设计人员进行数据库设计的有力工具,也是数据库设计人员和用户之间进行交流的语言。

9. 试述数据模型的概念、数据模型的作用和数据模型的三个要素。

      数据模型:是数据库中用来对现实世界进行抽象的工具,是数据库中用于提供信息表示和操作手段的形式架构。

      作用:精准地描述了系统的静态特性、动态特性和完整性约束条件。

      三要素:数据结构、数据操作、数据的完整性约束条件。

13. 试述关系模型的概念,定义并解释以下术语:关系、属性、域、元组、码、分量、关系模式。

      关系:一个关系对应一张表。

      属性:表中的一列。

      域:属性的取值范围。

      元组:表中的一行。

      码:表中能够确定一个元组的属性组。

      分量:元组中的一个属性值。

      关系模式:对关系的描述,一般表示为“关系名(属性1,属性2,……,属性n)”。

                        形式化地表示为:R关系名(U组成该关系地属性名集合,D属性所来自的域,DOM属性向域的映像集合,F属性间数据的依赖关系集合【第六章讨论】)

15. 试述数据库系统的三级模式结构,并说明这种结构的优点是什么。

        优点:三级模式是数据的三个抽象级别,它把数据的具体组织留给数据库管理系统管理,使用户能逻辑地、抽象地处理数据,而不必关心数据在计算机中具体表示方式和存储方式。

       DBMS在三级模式间提供的二级映像保证了数据库系统中的数据能够具有较高的逻辑独立性和物理独立性。

17. 什么叫数据与程序的物理独立性?什么叫数据与程序的逻辑独立性?为什么叫数据库系统具有数据与程序的独立性?

        数据与程序的物理独立性:当数据库的存储结构改变时,由数据管理员对模式/内模式映像作相应改变,可以使模式保持不变、从而应用程序也不必改变。

        数据与程序的逻辑独立性:当数据的逻辑结构(即模式)改变时,由数据库管理员对各个外模式/模式的映像作相应改变,可以使外模式保持不变,从而应用程序不必修改。

        DBMS在三级模式之间提供的两级映像保证了数据库系统中的数据能够具有较高的逻辑独立性和物理独立性。

没考:在关系系统中,当操作违反实体完整性、参照完整性和用户定义的完整性约束条件时,一般是如何分别进行处理的?P161

       对于违反实体完整性和用户定义完整性的操作,一般采用拒绝执行的方式进行处理;对于违反参照完整性的操作,并不都是简单地拒绝执行,有时要根据应用语义执行一些附加的操作,以保证数据库的正确性。

二、计算题37’ 非常类似考试真题!以下答案不唯一,纯由同学自写,有些来自网络。

1.设宾馆酒店业数据库有四张表:

Hotel(hotelNo, hotelName, city)
Room(roomNo, hotelNo, type(房间类型), price)
Booking(roomNo, guestNo, dateFrom(起始日期), dateTo(终止日期))
Guest(guestNo, guestName, guestAddress)
备注:price为int类型,其余字段均为字符串类型(VARCHAR(n)),下划线标识的字段为主码。

(1)试用关系代数完成如下查询:(7分)

①列出“长春”的所有宾馆的宾馆号和宾馆名称;(2分)

ΠhotelNo,hotelName(σcity=‘长春’(Hotel))

②列出“长春宾馆”的所有房间类型和价格;(2分)

Πtype,price(σhotelName=‘长春宾馆’(Hotel⋈Room))

③检索2017年12月2号(’20171202’)入住“长春宾馆”的客人号码和客人姓名。(3分)

ΠguestNo,guestName(Guest)⋈ ΠguestNo(ΠroomNo,guestNo(σdataFrom=‘20171202’(Booking))⋈ ΠroomNo(ΠhotelNo(σhotelName=‘长春宾馆’(Hotel))⋈ Room))

(2)写出SQL语句:(30分)

①定义关系模式Hotel和Room,要求在模式中完成以下完整性约束条件的定义:(7分)
    定义模式的主码;定义参照完整性;房间价格不能低于100元;定义type、price和hotelName不能为空。

create table Hotel
(hotelNo char(10) primary key,
hotelName char(10) not null,
city char(10));

create table Room
(roomNo char(10) primary key,
hotelNo char(10),
type char(10) not null,
price char(10) not null check(price>=100),
foreign key(hotelNo) references Hotel(hotelNo));

②统计各个宾馆的房间数。(2分)

select count(roomNo) from Room group by Hotel.hotelNo;

③删除2017年12月2号(’20171202’)退房的订房信息。(2分)

delete from Booking where dateTo=‘20171202’);

④增加一条宾馆信息(hotelNo:H1035, hotelName:前进宾馆, city:长春)。(2分)

insert into Hotel values(‘H1035’,‘前进宾馆’,‘长春’);

⑤将“长春宾馆”(宾馆名)的‘369’(房间号)房间的房间类型修改为“单人间”。(3分)

update Room set type = ‘单人间’
where roomNo = ‘369’ and hotelNo in
(select hotelNo from Hotel where hotelName = ‘长春宾馆’);

⑥创建一个断言,限制每个宾馆单人间的房间数不能多于8个。(4分)

create assertion roomnum check(8>=all(select count(*) from Room where
type=‘单人间’ group by hotelNo));

⑦创建一个视图,包含宾馆号、宾馆名称、所在城市、房间号、房间类型和房间价格,并将该视图的查看权限授予用户U1。(4分)

create view h (hotelNo,hotelName,city,roomNo,type,price)
as
(select Hotel.hotelNo,hotelName,city,roomNo,type,price from Hotel,Room
where Hotel.hotelNo = Room.hotelNo);

grant select on h to U1;

⑧建立触发器,当对表Room的price属性进行修改时,若价格增加了10%,则将此次操作记录到另一个表Room_U (roomNo, hotelNo, type(房间类型), Oldprice, Newprice)中,其中Oldprice是修改前的价格,Newprice是修改后的价格。(6分)

create trigger Room_T
after update of price on Room
referencing
old row as oldTuple,
new row as newTuple
for each row
when(newTuple.price>=1.1*oldTuple.price)
insert into Room_U (roomNo, hotelNo, type, oldTuple.price, newTuple.price)

三、设计题23’

1.设有关系模式R(A,B,C,D,E),给定数据依赖如下:AB→C, A→D, D→E。(8分)
(1)列出R的码;主码或候选码都简称为码

A、B

(2)R为第几范式? 说明理由;

第一范式   ∵各分量均不可再分,码A→非主属性D,而AB→D也能成立,存在非主属性对码的部分函数依赖   ∴不能是2NF,只能是1NF

(3)如果R不属于3NF,规范化R为3NF,并阐述规范化过程。

step①消除部分函数依赖:解决办法是用投影把关系模式R分解为两个关系模式:
R1(A,B,C)和 R2(A,D,E)
step②消除传递函数依赖: 解决办法是将R2分解为:AD(A,D)和 DE(D,E)
分解后的关系模式AD与DE中不再存在传递依赖

补充理解:重点掌握前4个范式 :1NF、2NF、3NF、BCNF

关系数据库中的关系需满足一定要求,满足不同程度要求的为不同的范式。

       满足最低要求的叫第一范式,简称1NF;在第一范式的基础上满足进一步要求的称为第二范式,简称2NF,其余范式以此类推。对于各种范式之间有如下关系:关系

1NF定义: 属于第一范式关系的所有属性都不可再分,即数据项不可分。(数据表具有原子性。)

反例:正例:

规范化: 一个低一级的关系模式通过模式分解可以转化为若干个高一级范式的关系模式的集合,这个过程叫做规范化。

2NFの定义: 若某关系R属于第一范式,且每一个非主属性完全函数依赖于任何一个候选码,则关系R属于第二范式。

码 :如果在一张表中,一个属性或属性组,被其他所有的属性(非主属性)所完全函数依赖,则称这个属性(属性组)为该表的码。(上面的表,学号和课程名称所构成的属性组就是码)

主属性:码中所有属性

非主属性:除码之外的所有属性

例如: 该表中码为 (学号、课程名称)但姓名、系名、系主任都部分依赖于码(主属性),不符合第二范式,故拆分如下

第一张表的码为(学号、课程名称),第二张表的码为(学号),它们都是完全依赖的,因此符合第二范式。

∵存在系主任依赖于系名(系名→系主任)∴不符合第三范式(需要在第二范式基础上消除传递依赖,如下图)

候选码: 若关系中的某一属性组的值能唯一地标识一个元组,而其子集不能,则称该属性组为candidate key。

主码:若一个关系中有多个候选码,则选定其中一个为primary key。

外码:关系模式R中属性或属性组X并非R的码,但X是另一个关系模式的码,则称X是R的外部码foreign key。

主属性: 所有候选码的属性称为prime attribute。

非主属性/非码属性:不包含在任何候选码中的属性称为non-prime attribute或non-key attribute。

全码:在最简单的情况下,只有一个属性是候选码。在最极端的情况下,关系模式的所有属性都是候选码,称all-key。

函数依赖:设R(U)是属性集U上的关系模式,X,Y是U的子集,若对于R(U)的任意一个可能的关系r,r中不可能存在两个元组在X上的属性值相等,而在Y上的属性值不等,则称X函数确定Y,或Y函数依赖于X,记作X→Y。X称这个函数依赖的决定属性组/决定因素determinant。

A→B,如果通过A属性(或属性组)的值,可以确定唯一的B属性的值,则称B函数依赖于A

例如:学号→姓名;(学号、课程名称)→  分数

平凡函数依赖:当关系中属性集合Y是属性集合X的子集时(Y⊆X),存在函数依赖X→Y,即一组属性函数决定它的所有子集,这种函数依赖称为平凡函数依赖。

非平凡函数依赖:当关系中属性集合Y不是属性集合X的子集时(Y⊈X),存在函数依赖X→Y,则称这种函数依赖为非平凡函数依赖。

完全函数依赖:设X,Y是关系R的两个属性集合,X'是X的真子集,存在X→Y,但对每一个X’都有X'!→Y,则称Y完全函数依赖于X。记作

A→B,如果A是一个属性组,B属性值的确定需要依赖A属性组的中所有的属性值,则称B完全函数依赖于A

例如:(学号、课程名称)→ 分数

部分函数依赖:设X,Y是关系R的两个属性集合,存在X→Y,若X'是X的真子集,存在X'→Y,则称Y部分函数依赖于X。记作 

A→B,如果A是一个属性组,B属性值的确定只需依赖A属性组的中某一些的属性值(第二范式就是消除这个),则称B部分函数依赖于A

例如:(学号 、课程名称)→ 姓名

传递函数依赖:设X,Y,Z是关系R中互不相同的属性集合,存在X→Y( Y⊈X 且Y !→X )Y→Z,则称Z传递函数依赖于X。记作

A→B , B→C 如果通过A属性(或属性组)的值,可以确定唯一的B属性的值,再通过B属性(属性组)的值,可以唯一确定C属性的值,那么称C传递依赖于A

例如: 学号→系名  ,系名→系主任 

直接函数依赖:X→YY→X,记作X←→Y,又Y→Z,则Z直接函数依赖于X。

3NFの定义: 非主属性既不传递依赖于码,也不部分依赖于码。

BCNFの定义: 关系模式R<U,F>中,若每一个决定因素都包含码,则R<U,F>∈BCFN。

4NFの定义: 限制关系模式的属性之间不允许有非平凡且非函数依赖的多值依赖。

5NF必须满足第四范式;表必须可以分解为较小的表,除非那些表在逻辑上拥有与原始表相同的主键。在第四范式的基础上做的进一步规范化。第四范式处理的是相互独立的多值情况,而第五范式则处理相互依赖的多值情况。

参考题:P203 T6

2.把图1中的E-R图转换为关系模型。(7分)
图1  教务系统E-R图(部分)

教材(教材号,教材名,出版社,价格,课程号)
学生(学号
课程(课程号
教师(职工号
选课(学号课程号
授课(课程号职工号注意“下划线”为主码

3.设有表SC(sno, cno, grade),编写存储过程将学生选课成绩grade从百分制改为等级制(即A、B、C、D、E)。(8分)

create or replace procedure change_c()
as declare
chgrade char(1);
currecord record;
begin
alter table SC add column(newgrade char(1));
for currecord in select*from SC
loop
if currecord.grade<60 then chgrade=‘E’;
else if currecord.grade<70 then chgrade=‘D’;
else if currecord.grade<80 then chgrade=‘C’;
else if currecord.grade<90 then chgrade=‘B’;
else chgrade=‘A’;
end if;
update SC set newgrade=chgrade
where sno=currecord.sno and
cno=currecord.cno;
end loop;
alter table SC drop column grade;
alter table SC rename newgrade to grade;
end;

没考以下内容!笔者多写了,有需要的可以看看。

P3数据库的4个基本概念:数据、数据库、数据库管理系统、数据库系统

P17数据模型的3个组成要素:数据结构、数据操作、数据的完整性约束条件

P38关系模型的3个组成部分:关系数据结构、关系操作集合、关系完整性约束(实体完整性、参照完整性、用户定义完整性)

域domain:一组具有相同数据类型的值的集合

笛卡儿积cartesian protuct:给定一组域D1,D2,...Dn,允许其中某些是有相同的。

                                             D1xD2x…×Dn={(d1,d2,…,dn) l di∈Di , i=1,2,…n}

关系:在域D1,D2,…,Dn上笛卡儿积D1xD2xxDn的子集R(D1,D2,…,Dn)。

元组:关系中的每个元素是关系中的元组。

属性:关系也是一个二维表,表的每行对应个元组,表的每列对应一个。由于可以相同为了加以区分,必须对每列起一个名字,称为属性(attribute)。

关系模式:关系的描述。是静态的、稳定的。

关系:关系模式在某一时刻的状态或内容。是动态的、随时间不断变化的。

关系数据库:有型和值之分。关系数据库的型也称为关系数据库模式(对关系数据库的描述)包括若干域的定义,以及在这些域上定义的若干关系模式。关系数据库的值也称关系数据库,是这些关系模式在某一时刻对应的关系的集合。

P140紫皮书TCSEC/TDI将系统划分为4组(division)7个等级:

       C2级的数据库管理系统支持自主存取控制方法DAC:定义各个用户对不同数据对象的存取权限。当用户对数据库访问时首先检查用户的存取权限。防止不合法用户对数据库的存取。 

       B1级的数据库管理系统支持强制存取控制方法MAC:每一个数据对象被(强制地)标以一定的密级,每一个用户也被(强制地)授予某一个级别的许可证。系统规定只有具有某一许可证级别的用户才能存取某一个密级的数据对象。

P133数据库的安全性:指保护数据库以防止不合法使用所造成的数据泄露、更改或破环。

P137数据库安全性控制的常用方法:

用户身份鉴别

多层存取控制:系统提供用户权限定义和合法权限检查功能,用户只有获得某种权限才能访问数据库中的某些数据。

视图机制:为不同的用户定义不同的视图,通过视图机制把要保密的数据对无权存取的用户隐藏起来,从而自动对数据提供一定程度的安全保护。

审计:建立审计日志,把用户对数据库所有操作自动记录下来放入审计日志中,审计员可利用审计信息重现导致数据库现有状况的一系列事件,找出非法存取数据的人、事件和内容等。

数据加密

P155T9.解释强制存取控制机制中主体、客体、敏感度标记的含义。

主体:是系统中的活动实体,既包括数据库管理系统DBMS所管理的实际用户,也包括代表用户的各进程。

客体:是系统中的被动实体,是受主体操纵的,包括文件、基本表、索引、视图等。

敏感度标记label:对于主、客体,DBMS为它们每个实例(值)指派一个敏感度标记。它被分成若干级别,eg.绝密Top Secret,TS、机密Secret,S、可信Confidential,C、公开Public,P等。密级的次序是TS>=S>=C>=P。主体的敏感度标记称为许可证级别clearance level,客体的称为密级classification level。

P155T11.什么是数据库的审计功能,为什么要提供审计功能?

审计功能:是DBMS达到C2以上安全级别必不可少的一项指标。DBMS的审计模块在用户对数据库执行操作的同时把所有操作自动记录到系统的审计日志audit log中。

       ∵任何系统的安全保护措施都不是完美无缺的,审计员DBA可以利用审计日志监控数据库中的各种行为,重现导致数据库现有状况的一系列事件,找出非法存取数据的人、时间和内容等。

P173T1.数据库的完整性:指数据库的正确性&相容性

P173T4.DBMS的完整性控制机制应具有哪些功能?

       应具有三个方面的功能:①定义功能,即提供定义完整性约束条件的机制;②检查功能,即检查用户发出的操作请求是否违背了完整性约束条件;③违约反应:如果发现用户的操作请求使数据违背了完整性约束条件,则采取一定的动作来保护数据的完整性。

评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值