数据库系统概论期末复习【超实用】_数据库系统概论第五版期末试题-程序员宅基地

技术标签: 王珊  萨师煊  数据库系统概论  数据库  

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

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

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

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

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

软件工程专业大学四年学什么_大学近代史学分是多少-程序员宅基地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的完整性控制机制应具有哪些功能?

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

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_41587612/article/details/103746951

智能推荐

最好的OCR识别(图片转换文字)工具:ABBYY FineReader_ocr 俄罗斯-程序员宅基地

文章浏览阅读1.4k次。我们经常用到一些扫描件和pdf文件,有时候需要将这些图片和pdf文件转换为word等文本以便于编辑,最原始的方法莫过于对着文稿敲字排版了,但是这样耗时耗力,非常不方便。这里推荐一款据说是全球最好的OCR识别软件:来自于俄罗斯ABBYY FineReader。ABBYY FineReader 是一款专业的OCR软件,不仅支持多国文字,还支持彩色文件识别、自动保留原稿插图和排版格式以及后台批处理识别功能。打开ABBYY FineReader 软件,选择所需要的操作。选择照片到word(pdf转换,则选_ocr 俄罗斯

tomcat 修改部署web项目的路径-程序员宅基地

文章浏览阅读4.3k次。tomcat 发布自己项目操作实际很简单,修改路径是为了方便我们发布项目,不需要频繁操作。1. 首先当然是去tomcat官网选择你需要的版本下载tomcat.apache.org/download-70…2. 下载需要的JDKwww.oracle.com/technetwork…安装之后设置环境变量, JAVA_HOME = "你安装的java地址"例如: JAVA_HOME="C:\Prog..._修改tomcat web部署路径

分布式理论--脑裂问题_分布式系统多实例脑裂问题如何解决-程序员宅基地

文章浏览阅读530次。以下一段话摘自《深入分布式缓存从原理到实践》: 主备是实现高可用的有效方式,但存在脑裂问题。脑裂(split-brain),指在一个高可用的系统中,当联系着的两个节点断开联系时,本来为一个整体的系统,分裂为两个独立节点,这时两个节点开始争抢共享资源,结果会导致系统混乱,数据损坏。..._分布式系统多实例脑裂问题如何解决

java面试_沈阳亿思达java面试-程序员宅基地

文章浏览阅读326次。沈阳_沈阳亿思达java面试

Window主机加固_有汇编加固win-程序员宅基地

文章浏览阅读524次。win+r 输入cmd进入命令提示符用dir调出所有任务cd 可以进入一个指定目录cd .. 穿越或返回上一层文件名有空格不连贯就是蓝标 箭头所指,没有空格的就是红色所指它们的区别在于有空格是有双引号的,没有空格是没有的切换盘的话 直接盘后面加冒号还有一种方法 在该盘输入cmdmd 创建文件夹 dir是查看目录以下dir /a 显示隐藏文件dir /b 只显示现在文件夹与文件夹名称命令+/? 可以知..._有汇编加固win

MobaXterm远程登录Ubuntu(详细教程)_mobaxterm ubuntu-程序员宅基地

文章浏览阅读1w次,点赞27次,收藏98次。MobaXterm远程登录Ubuntu(详细教程)_mobaxterm ubuntu

随便推点

Linux挂载文件系统时出现遇到问题wrong fs type-程序员宅基地

文章浏览阅读1.3w次,点赞5次,收藏4次。运行挂载命令如 mount /dev/sdb1 mnt出现错误:mount: wrong fs type, bad option, bad superblock on /dev/sdc1,missing codepage or helper program, or other errorIn some cases useful info is found in syslog - trydmesg | tail or so.解决方法:检查该磁盘的文件系统,即运行命令:fsck -t ext4 /_wrong fs type

SaaS产品项目实施流程_saas系统实施-程序员宅基地

文章浏览阅读2.6k次。一、商务洽谈阶段【销售负责】1.初步接触:甲乙双方初步认识,互相介绍下需求和产品;【对接人,销售部、业务部、采购部】(1).输入:某大型活动、某渠道资源;(2).输出:客户直接的了解认识;2沟通交流:对现有产品价值和功能,跟客户演示介绍,介绍我们有什么;【对接人,销售部、业务部、采购部】(1).输入:现有产品支撑功能;(2).输出:客户的信任和业务满足;3.深入交流:对客户的需求,进行初步响应讨论和确认,沟通可以做什么;【业务部门,深入需求沟通,形成纪要】(1).输入:客户的信任;(2)._saas系统实施

Windows实现开机自启动指定程序的几种方式_windows自启动-程序员宅基地

文章浏览阅读3.8k次。在某些应用场景,出于操作便捷性,会需求在系统启动进桌面时就自动运行指定程式,免去了人工再次手动打开,提高了不少便捷性。放入后,可在任务管理器【Ctrl+shift+esc】或引导启动管理窗口【msconfig】确认查看是否添加成功。打开注册表编辑器,依次找到如下路径,找到shell值,双击打开,将数值数据区域填入要启动的程序路径,确认保存即可。【WIN+R】调出运行窗口,输入如下指令,打开启动文件夹,将要启动的程序或脚本文件,放入文件夹即可。开始菜单或F3,搜索【任务计划程序】,找到打开。_windows自启动

linux进程间全局变量,linux进程间通信-程序员宅基地

文章浏览阅读981次。进程间通信:每个人进程各自有不同的用户地址空间,任何一个进程的全局变量在另一个进程中都看不到,所以进程之间要交换数据必须通过内核,在内核中开辟一块缓存区,进程1将数据从用户空间拷到内核缓冲区,进程2再从内核缓冲区把数据读走,内核提供的这种机制叫做进程间通信(IPC)。管道:一种最基本的IPC机制,由pipe函数创建。#includeint pipe(int filedes[2]);调用pipe函数..._进程内的全局变量

Unicode和UTF-8之间的转换_unicode 与 utf8 互转-程序员宅基地

文章浏览阅读1.8w次,点赞6次,收藏25次。 通过这几天的研究,终于明白了Unicode和UTF-8之间编码的区别。Unicode是一个字符集,而UTF-8是Unicode的其中一种,Unicode是定长的都为双字节,而UTF-8是可变的,对于汉字来说Unicode占有的字节比UTF-8占用的字节少1个字节。Unicode为双字节,而UTF-8中汉字占三个字节。注: Unicode编码目前规划的总空间是17个平面,0x0000 至 0x..._unicode 与 utf8 互转

关键字static/const的作用-程序员宅基地

文章浏览阅读49次。这个简单的问题很少有人能回答完全。在C语言中,关键字static有三个明显的作用:1)在函数体内,一个被声明为静态的变量在这一函数被调用过程中维持其值不变(该变量存放在静态变量区)。2)在模块内(但在函数体外),一个被声明为静态的变量可以被模块内所用函数访问,但不能被模块外其它函数访问。它是一个本地的全局变量。3)在模块内,一...