欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 汽车 > 新车 > 数据库精选题(六)(综合模拟题一)

数据库精选题(六)(综合模拟题一)

2024/10/25 8:20:00 来源:https://blog.csdn.net/m0_67656158/article/details/139926465  浏览:    关键词:数据库精选题(六)(综合模拟题一)

🌈 个人主页:十二月的猫-CSDN博客
🔥 系列专栏: 🏀数据库

💪🏻 十二月的寒冬阻挡不了春天的脚步,十二点的黑夜遮蔽不住黎明的曙光

目录

前言

一、名词解释

1. 数据独立性

2. 正则覆盖

3. 两阶段封锁协议

4. 实体完整性约束

二、简答

1. 事务的ACID 特性分别是什么?每个特性的用途是什么?

2. 死锁的发生是坏事还是好事?试说明理由。如何解除死锁状态?

3. 在嵌入式 SQL中,什么情况下的 DML语句不必涉及到游标操作?

4. 试述 ER模型、层次模型、网状模型、关系模型和面向对象模型的主要特点

三、关系代数

四、E-R模型

五、关系模式

题目一

题目二

六、冲突串行化

七、SQL语句

总结 


前言

前面从数据库概论、关系代数、SQL、E-R模型、关系数据库设计到事务、并发控制以及恢复系统,我已经对数据库的每一个专题都做了精选题的解析和总结。

接下去来做几套综合试题进一步巩固一下知识点

一、名词解释

1. 数据独立性

数据独立性是指数据和应用程序之间相互独立,包括逻辑独立行和物理独立性。逻辑独立性是指数据改变通过外模式/模式映像使得应用程序不用发生变化;物理逻辑性指数据存储结构变化通过模式/内模式使得数据不用发生变化

2. 正则覆盖

正则覆盖:满足下列条件的函数依赖集F称为正则覆盖,记作Fc:1、Fc与F等价;2、Fc中任何函数依赖不包含无关属性;3、Fc中函数依赖的左半部是唯一的

求正则覆盖:1、合并;2、除去无关属性

其中合并对应条件3

除去无关属性对应条件2

3. 两阶段封锁协议

两段锁协议:可以保证可串行性。两段锁协议要求每个事物分成两个阶段提出加锁和解锁申请:增长阶段:事物可以获得封锁,不能释放锁;缩减阶段:事物可以释放锁,但不能获得新锁。

4. 实体完整性约束

理解:实体完整性指每个实体都是独立完整的,不依赖其他实体,都是唯一可确定的

 实体完整性约束指:每个实体主码中的属性值都是非空且唯一的

二、简答

1. 事务的ACID 特性分别是什么?每个特性的用途是什么?

原子性(Atomicity) 事务中包含的所有操作要么全做,要么全不做
一致性(Consistency) 事务的隔离执行必须保证数据库的一致性
隔离性(Isolation) 系统必须保证事务不受其它并发执行事务的影响
持久性(Durability) 一个事务一旦提交之后,它对数据库的影响必须是永久的

2. 死锁的发生是坏事还是好事?试说明理由。如何解除死锁状态?

一般来说,死锁状态本身是一件坏事,因为死锁将造成资源的浪费、数据库的死循环(业务中断)、数据不一致风险等;但是加入两阶段封锁协议导致的死锁不一定只是坏事,因为如果发生死锁说明在两阶段封锁协议下,这个事务并不是可串行化的,此时不发生死锁让事务任意并发的运行会导致数据不一致、读取脏数据等错误。从这个角度来说,出现死锁反倒是一种保护。

解除死锁状态包括:1、避免死锁;2、检测死锁;3、处理死锁

避免死锁:一次封锁法;顺序封锁法;抢占与事务回滚

检测死锁:超时法、等待图法

处理死锁:在出现死锁后,选择牺牲代价最小的那个事务作为牺牲者,将该事务执行回滚操作(全部回滚/部分回滚),从而解除死锁(这个处理死锁的方法可能出现饿死现象)

3. 在嵌入式 SQL中,什么情况下的 DML语句不必涉及到游标操作?

在SQL语句中的delete、insert、update语句都是对一条记录操作,所以不必涉及到游标。同时对已确定查询结果是单值的select语句也是不必涉及游标操作的

4. 试述 ER模型、层次模型、网状模型、关系模型和面向对象模型的主要特点

1、E-R模型是实体联系模型。从实体和实体间的各种关系来表达联系,与计算机系统无关,用户容易理解,且能够充分表达现实世界

2、层次模型的数据结构是树结构,记录之间联系通过指针实现,查询较快,但是DML属于过程化的,操作复杂

3、网状模型的数据结构是有向图,记录之间联系通过指针实现,查询较快,但是DML属于过程化的,编程复杂,不易理解

4、关系模型的数据结构是二维表格,联系靠关系实现。DML属于非过程化的,编程简单,容易理解

5、面向对象模型的数据结构主要是类和对象,联系靠封装、多态、继承等实现。具有丰富的表达能力,能够很好反映现实世界的实际情况。但是用户难以理解,知识面较广

三、关系代数

问题描述:

第一问修正:R ⋈ S

问题求解: 

 1、

自然连接:如果左右没有匹配上就会被丢弃

左外自然连接:无论左边和右边是否匹配上,左边都将被保留作为一个元组

右外自然连接类似 

2、

笛卡尔积就是左右两两各组合一次 

3、

分析:

结果:

4、

分析:

 结果:

四、E-R模型

问题描述:

假设某超市公司要设计一个数据库系统来管理该公司的业务信息。该超市公司的业
务管理规则如下:
⑴该超市公司有若干仓库,若干连锁商店,供应若干商品。
⑵每个商店有一个经理和若干收银员,每个收银员只在一个商店工作。
⑶每个商店销售多种商品,每种商品可在不同的商店销售。
⑷每个商品编号只有一个商品名称,但不同的商品编号可以有相同的商品名称。每种商
品可以有多种销售价格。
⑸超市公司的业务员负责商品的进货业务。
试按上述规则设计ER 模型。( 10 分)

问题求解:

1、超市公司是整体,不用出现在E-R模型中

2、实体集有:仓库、连锁超市、商品、经理、收银员、业务员、销售价格(多值属性转化成实体集)

3、联系1:仓库、商店和商品之间的三元联系。仓库向商店提供商品

      联系2:商店和经理、商店和收银员之间的两个二元联系。经理在商品管理,收银员在商店收银

      联系3:商店和商品之间的二元联系。商店销售商品

      联系4:商品和销售价格之间的二元联系。商品拥有价格

      联系5:业务员和商品以及仓库的三元联系。业务员从仓库进货商品

      联系6:仓库和商品之间的二元联系。仓库存储商品,从而业务员能够从仓库进货商品

4、写出实体的属性集(图中并没有写,大家可以自行补上)

五、关系模式

题目一

问题描述:

1. 设关系模式R(ABCD), F 是R 上成立的FD 集,F={A→B,B→C},

  1. 试写出属性集BD 的闭包(BD)+。
  2. 试写出所有左部是B 的函数依赖(即形为“B→?”)。(4 分)

问题求解:

解:

①从已知的 F,可推出BD→BCD,所以(BD)+=BCD。
②由于B的闭包=BC,因此左部是B 的FD 有四个:
B→φ,B→B,B→C,B→BC。

难点在于平凡函数依赖的找寻:

1、空集

2、自己

3、加上自己的全新集合

题目二

问题描述:

2. 设关系模式R(ABC ), F 是R 上成立的FD 集,F={ C→B,B→A }。

  1. 试说明R 不是3NF 模式的理由。
  2. 试把R 分解成3NF 模式集。(6 分)

问题求解:

解:

1. R(ABC)的候选码是C,C->A是一个传递依赖,存在候选码的传递依赖,所以R不是3NF形式

2. 写出F的正则覆盖Fc{C→B,B→A},因此分解为两个关系模式R1{(BC),C→B}、R2{(BA),B→A },并且候选码包含在R1中,所以不用添加一个候选码关系模式。

最终分解结果为:{(AB)、(BC)}

判断3NF

1、平凡依赖

2、a->b其中a为超码

3、b-a属于候选码

六、冲突串行化

问题描述:

问题求解:

 冲突可串行化判断:优先图

七、SQL语句

问题描述:

问题求解:

SQL答案

一、
select E#,ename
from emp
where age>50 and sex='男'
二、
select E#,ename
from works,emp
where works.E#=emp.E# and works.C#=C4
intersect
select E#,ename
from works,emp
where works.E#=emp.E# and works.C#=C8
三、
select E#,count(C#) as num,sum(salary) as sum_salary
from emp,works
where works.E#=emp.E#
group by E#
四、
select ename
from emp
minus
select ename
from emp,works
where works.E#=emp.E# and works.C#=C3
五、
select E#
from emp e
where not exists(select C#from workswhere works.E#='E6'minusselect C#from works wwhere e.E#=w.E#
)
六、
select E#,ename
from emp,works,comp
where works.E#=emp.E# and comp.C#=works.C# and cname='联华公司'
and salary<(select avg(salary)from works,compwhere comp.C#=works.C# and cname='联华公司'
)
七、
update works
set salary=salary+100
where E# in(select E#from empwhere age>50
)
八、
delete from works
where E# in(select E#from empwhere age>60
)
delete from emp
where age>60

大部分题都是常见的,仅对七、八做些强调:

七、update时一次只能更新一个表格,下面给出一个错误的写法

update works,emp
set salary=salary+100
where emp.E#=works.E# and age>50

为了避开这种写法,采用嵌套子结构

八、delete一次也只能对一个表格操作,这里的delete前后顺序不可改变

总结 

本文的所有知识点、图片均来自山东大学数据库往年题,不可用于商业用途转发

如果对你有帮助,可以给个赞、收藏一下呀

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com