当前位置: 首页 > news >正文

数据库复试问题总结

数据库复试问题

由《数据库系统概论(第5版)》总结而来,用于本人研究生复试准备。也欢迎各位准研究生们学习使用。

文章目录

  • 数据库复试问题
    • 1、三级模式结构及二级映射有什么优点?
    • 2、关系模型中的完整性约束是哪几类?
    • 3、SQL的特点?
    • 4、SQL语言的分类
    • 5、等值连接和自然连接的区别是什么?
    • 6、外连接是什么?
    • 7、索引的作用?和它的优点缺点是什么?
    • 8、数据库中常用的索引有哪些?
    • 9、视图是什么?有何作用?
    • 10、数据库的安全性是指什么?有哪些安全性技术?
    • 11、存取控制是指什么?主要包括哪两部分?有哪两类方法?
    • 12、视图机制是如何对数据库实现安全性控制的?
    • 13、审计功能是如何对数据库实现安全性控制的?
    • 14、数据库的完整性是指什么?
    • 15、什么是断言?
    • 16、什么是触发器?触发器的作用?
    • 17、规范化过程中,逐级依次消除了何种函数依赖?
    • 18、数据库设计的基本步骤是什么?
    • 19、概念模型有什么作用?
    • 20、合并E-R图时主要包括哪几种冲突?
    • 21、一个实体型转换为一个关系模式有哪几种情况?
    • 22、关系数据库中查询处理的步骤是什么?
    • 23、事务是什么?ACID特性包括?
    • 24、并发控制的主要技术有哪些?
    • 25、什么是锁?有哪两种封锁类型?
    • 26、简要概括一、二、三级封锁协议
    • 27、并发事务问题
    • 28、冗余数据、修改异常、删除异常和插入异常
    • 29、简述数据字典
    • **30、事务隔离级别**

1、三级模式结构及二级映射有什么优点?

(1)外模式:又称用户模式,它是数据库用户能够看见和使用的数据视图。

(2)模式:是对数据库中全体数据的逻辑结构和特征的描述。

(3)内模式:又称为存储模式,它是数据物理结构和存储方式的描述。

​ 一个数据库只有一个模式和一个内模式,可以有多个外模式。

外模式/模式映像的优点:当模式改变时,通过数据库管理员对外模式/模式映像做相应的改变,外模式可以保持不变。应用程序是根据外模式而编写的,因而应用程序不必修改,保证了数据的逻辑独立性;

内模式/模式映像的优点:当数据库的存储结构改变时,通过对模式/内模式映射作相应的改变,可以使模式保持不变,从而应用程序也不必改变。保证了数据的物理独立性。

2、关系模型中的完整性约束是哪几类?

实体完整性:关系模式中的主码不能为空值;

参照完整性:关系模式中的外码只能是空值或者另一关系模式的主码;

用户定义完整性:关系模式中针对某一属性的约束。

3、SQL的特点?

(1)综合统一。集DCL,DML,DDL功能于一体;

(2)高度非过程化。只需要提出“做什么”,而不需要指明怎么做;

(3)面向集合的操作方式。

(4)提供多种使用方式。既可以作为独立的语言进行交互,又可以作为嵌入式语言嵌入到更高级的语言程序中进行操作;

4、SQL语言的分类

  • DDL: 数据定义语言,用来定义数据库对象(数据库、表、字段)
  • DML: 数据操作语言,用来对数据库表中的数据进行增删改
  • DQL: 数据查询语言,用来查询数据库中表的记录
  • DCL: 数据控制语言,用来创建数据库用户、控制数据库的访问权限

5、等值连接和自然连接的区别是什么?

自然连接是等值连接的一种特殊情况;

等值连接要求连接的是值相等的分量,两个关系中可以没有相同的属性;进行自然连接的两个关系中必须有相同的属性。

等值连接不要求去掉重复属性列;自然连接时需要除掉重复的属性列。

6、外连接是什么?

外连接是指两个表在进行操作时,不仅返回符合连接的元组,还返回不符合条件的一些元组;

左外连接是指列出左表的全部元组,若右表无对应记录,则为NULL;

右外连接是指列出右表的全部元组,若左表无对应记录,则为NULL;

全外连接是左外连接+右外连接。

7、索引的作用?和它的优点缺点是什么?

当表的数据量比较大时,查询操作比较耗时,建立索引可以加快查询速度。

优点:加速查询速度;

缺点:索引需要占一定的存储空间,且基本表更新时需要维护索引表。

8、数据库中常用的索引有哪些?

B+树索引:B+树是对B树优化处理了的多路搜索树,与B树的区别在于,B树的每个结点都可以存储数据,而B+树只有叶子结点可以存储数据,且每个叶子结点都用链表链接。在数据库的查询中一般都是批量查询数据,采用B+树一次查询多条时,确定首尾位置,便可以方便的确定多条数据位置,提高查询效率。

Hash索引:通过一定的算法计算出哈希值,然后映射出对应的数据存储位置。检索速度快,但是哈希值可能存在碰撞。

9、视图是什么?有何作用?

视图是从一个或几个基本表中导出的表,是一个虚表。数据库中只存放视图的定义,而不存放视图对应的数据。基本表中的数据发生变化时,从视图中查询出来的数据也就随之发生变化。

作用:

能够简化用户的操作;

使用户能以多种角度看待同一数据;

在一定程度上提供了数据的逻辑独立性;

能够对秘密数据提供安全保护;

10、数据库的安全性是指什么?有哪些安全性技术?

数据库的安全性是指保护数据库不被恶意破坏和非法存取。

安全性技术:用户标识和鉴别、多层存取控制、审计、视图、数据加密。

11、存取控制是指什么?主要包括哪两部分?有哪两类方法?

存取控制是指确保只授权给有资格的用户访问数据库的权限,且令所有未被授权的人员无法接近数据。

两个部分:定义用户权限和合法权限检查;

两种方法(两种不能都用):

自主存取控制(DAC):用户对不同的数据库对象有不同的存取权限,不同的用户对同一对象也有不同的权限

强制存取控制(MAC):每一个数据库对象被标以一定的密级,每一个用户也被授予一定级别的许可证,只有具有合法许可证的用户才可以进行存取。

12、视图机制是如何对数据库实现安全性控制的?

可以对不同的用户定义不同的视图,也就是说,通过视图机制把要保密的数据对无权存取的用户隐藏起来。

13、审计功能是如何对数据库实现安全性控制的?

审计功能是把用户对数据库的一系列操作自动记录到审计日志中,审计员可以利用审计日志监控数据库中的各种行为,找出导致数据库发生异常的事件。

14、数据库的完整性是指什么?

数据库的完整性是指数据的正确性和相容性,防止数据库中存在不正确的数据。

15、什么是断言?

断言是指更具有一般性的约束,断言创建后,任何涉及到断言中的关系的操作都会引发数据库对断言的检查,任何使断言为假的操作都会被拒绝执行。

16、什么是触发器?触发器的作用?

触发器是用户定义在关系表上的一类由事件驱动的特殊过程,类似于约束,但是比约束更灵活,是保证数据库完整性的一种方法。任何用户对表进行增删改操作都会激活相应的触发器,之后触发器会对数据库进行相应的检查和操作。

17、规范化过程中,逐级依次消除了何种函数依赖?

候选码(候选键):唯一标识元组的属性或属性集,可能不止一个。选取其中一个作为主码(主键)。

主属性:包含在任何一个候选码中的属性。反之非主属性。

由1NF到2NF,消除了非主属性对候选码的部分函数依赖; 即非主属性完全函数依赖于候选码。

由2NF到3NF,消除了非主属性对候选码的传递函数依赖;

由3NF到BCNF,消除了主属性之间的部分函数依赖和传递函数依赖。

18、数据库设计的基本步骤是什么?

需求分析:了解和分析用户需求(建立数据字典);

概念结构设计:根据用户需求转换成E-R图;

逻辑结构设计:将E-R图转换为关系模型;

物理结构设计:设计存储结构和存取方法;

数据库实施阶段:编写数据库,编写和调试应用程序;

数据库运行和维护:正式投入运行。

19、概念模型有什么作用?

概念模型用于信息世界的建模,是现实世界到信息世界的第一层抽象,是数据库设计人员进行数据库设计的有力工具,也是数据库设计人员和用户之间进行交流的语言。(用E-R图来描述现实世界的概念模型)

20、合并E-R图时主要包括哪几种冲突?

属性冲突。不同的实体对同一属性的定义不同;

命名冲突。同名异义、异名同义;

结构冲突。同一实体在不同的局部E-R图中有不同的抽象。

21、一个实体型转换为一个关系模式有哪几种情况?

一个1:1联系可以转换为一个独立的关系模式,也可以与任意一端对应的关系模式合并;

一个1:n联系可以转换为一个独立的关系模式,也可以与n端对应的关系模式合并;

一个m:n联系可以转换为一个关系模式,与该联系相连的各实体的码以及联系本身的属性均转换为关系的属性。

22、关系数据库中查询处理的步骤是什么?

查询分析:对查询语句进行词法分析、语法分析;

查询检查:对合法的查询语句进行语义检查;

查询优化:选择一个高效执行的查询处理策略;

查询执行:依据优化得到的执行策略生成查询执行计划,并生成相应代码。

23、事务是什么?ACID特性包括?

事务是数据库进行操作的一个基本单位。

ACID特性包括:

原子性(Atomicity):事务是一个不可分割的单位,要么全做,要么全不做;

一致性(Consistency):事务完成后,必须使所有数据都保持一致状态

隔离性(Isolation):一个事务的执行不受外部并发操作影响

持久性(Durability):一旦事务被提交,它对数据库的改变就是永久的。

事务的基本操作:回滚(roolback)和提交(commit).

24、并发控制的主要技术有哪些?

有封锁、时间戳、乐观控制法、和多版本并发控制等。

25、什么是锁?有哪两种封锁类型?

锁是最常用的并发控制技术,是防止其他事务访问指定资源,实现并发控制的一种手段。

排他锁(X写锁):当数据被加上写锁,其他事务不能对该数据进行读和写;

共享锁(S读锁):当数据被加上读锁,允许其他事务对该数据进行读,不允许写。

26、简要概括一、二、三级封锁协议

一级封锁协议:事务在修改数据之前加写锁,直到事务结束才释放。该协议可以防止丢失修改;

二级封锁协议:在一级封锁协议的基础上,加上了事务在读取数据之前对其加读锁,读完后即可释放读锁。该协议避免了读脏数据;

三级封锁协议:在一级封锁协议的基础上,加上了事务在读取数据之前对其加读锁,直到事务结束才释放。该协议解决了不可重复读问题。

27、并发事务问题

丢失修改:指事务1和事务2同时读入相同的数据并进行修改,事务2提交的结果破坏了事务1提交的结果,导致事务1进行的修改丢失。

问题描述
脏读一个事务读到另一个事务还没提交的数据
不可重复读一个事务先后读取同一条记录,但两次读取的数据不同
幻读一个事务按照条件查询数据时,没有对应的数据行,但是再插入数据时,又发现这行数据已经存在

28、冗余数据、修改异常、删除异常和插入异常

冗余数据:例如 学生-2 出现了两次。

修改异常:修改了一个记录中的信息,但是另一个记录中相同的信息却没有被修改。

删除异常:删除一个信息,那么也会丢失其它信息。例如删除了课程-1需要删除第一行和第三行,那么学生-1的信息就会丢失。

插入异常:例如想要插入一个学生的信息,如果这个学生还没选课,那么就无法插入。

为了解决这些问题,从而引入了规范化。

29、简述数据字典

数据字典的内容包括数据项、数据结构、数据流、数据存储、处理过程五个部分。

数据字典是对数据库中数据的描述,即元数据,而不是数据本身。数据字典在需求分析阶段建立。

30、事务隔离级别

事务隔离级别读脏不可重复读幻读
(1)读未提交(read-uncommitted)
(2)不可重复读(read-committed)
(3)可重复读(repeatable-read)(默认)
(4)串行化(serializable)

相关文章:

数据库复试问题总结

数据库复试问题 由《数据库系统概论(第5版)》总结而来,用于本人研究生复试准备。也欢迎各位准研究生们学习使用。 文章目录数据库复试问题1、三级模式结构及二级映射有什么优点?2、关系模型中的完整性约束是哪几类?3、SQL的特点?…...

Linux操作系统安装——服务控制

个人简介:云计算网络运维专业人员,了解运维知识,掌握TCP/IP协议,每天分享网络运维知识与技能。座右铭:海不辞水,故能成其大;山不辞石,故能成其高。个人主页:小李会科技的…...

【C语言】编译+链接

一、程序的翻译环境和执行环境 在ANSI C的任何一种实现中,存在两个不同的环境。 第1种是翻译环境,在这个环境中源代码被转换为可执行的机器指令。 第2种是执行环境,它用于实际执行代码。详解编译链接翻译环境1.组成一个程序的每个源文件通过…...

为「IT女神勋章」而战

大家好,我是空空star,今天为「IT女神勋章」而战 文章目录前言一、IT女神勋章二、绘制爱心1.htmlcssjs来源:一行代码代码效果2.python来源:C知道代码效果3.go来源:复制代码片代码效果4.java来源:download代码…...

JS 动画 之 setInterval、requestAnimationFram

帧率:一秒中内页面刷新的次数,一般为60FPS,每一帧的时间是1000/6016.67ms setInterval 当我们使用setInterval做动画时,有两点会影响动画效果 由于setInterval是异步任务(宏任务),会放到异步队…...

【LeetCode——排序链表】

文章目录排序链表二、解题思路:二.实现的代码总结:排序链表 一道链表排序题,链接在这里 二、解题思路: 解题思路:使用归并排序(用递归实现) 第一步:先找到链表的中间节点 第二步…...

二叉树的遍历(前序、中序、后序)| C语言

目录 0.写在前面 1.前序遍历 步骤详解 代码实现 2.中序遍历 步骤详解 代码实现 3.后序遍历 步骤详解 代码实现 0.写在前面 认识二叉树结构最简单的方式就是遍历二叉树。所谓遍历二叉树就是按照某种特定的规则,对二叉树的每一个节点进行访问,…...

【建议收藏】深入浅出Yolo目标检测算法(含Python实现源码)

深入浅出Yolo目标检测算法(含Python实现源码) 文章目录深入浅出Yolo目标检测算法(含Python实现源码)1. One-stage & Two-stage2. Yolo详解2.1 Yolo命名2.2 端到端输入输出2.3 Yolo中的标定框2.4 Yolo网络结构2.5 Yolo的算法流…...

Vue常见的事件修饰符

前言 vue一共给我们准备了6个事件修饰符,前三个比较常用,后三个少见,这里着重讲下前三个 1.prevent:阻止默认事件(常用) 2. stop:阻止事件冒泡(常用) 3. once:事件只触发一次(常用) 4.captrue:使用事件的捕捉模式(不常用) 5.self:只有event…...

【卷积神经网络】激活函数 | Tanh / Sigmoid / ReLU / Leaky ReLU / ELU / SiLU / GeLU

文章目录一、Tanh二、Sigmoid三、ReLU四、Leaky ReLU五、ELU六、SiLU七、Mish本文主要介绍卷积神经网络中常用的激活函数及其各自的优缺点 最简单的激活函数被称为线性激活,其中没有应用任何转换。 一个仅由线性激活函数组成的网络很容易训练,但不能学习…...

刷题记录:牛客NC24048[USACO 2017 Jan P]Promotion Counting 求子树的逆序对个数

传送门:牛客 题目描述 奶牛们又一次试图创建一家创业公司,还是没有从过去的经验中吸取教训–牛是可怕的管理者! 为了方便,把奶牛从 1∼n1\sim n1∼n 编号,把公司组织成一棵树,1 号奶牛作为总裁(这棵树的根…...

MpAndroidChart3最强实践攻略

本篇主要总结下Android非常火爆的一个三方库MpAndroidChart的使用。可能在大多数情况下,我们很少会在Android端去开发图表。但如果说去做一些金融财经类、工厂类、大数据类等的app,那么绝对会用到MpAndroidChart。 一、前言 2018年,那年的我…...

Spring笔记(9):事务管理ACID

一、事务管理 一个数据库事务是一个被视为单一的工作单元操作序列。 事务管理有四个原则,被成为ACID: Atomicity 原子性—— 事务作为独立单元进行操作,整个序列是一体的,操作全都成功或失败。Consistency 一致性—— 引用完整…...

io流 知识点+代码实例

需求 : 如何实现读写文件内部的内容?流 : 数据以先入先出的方式进行流动相当于管道,作用用来传输数据数据源-->流-->目的地流的分类 :流向分 : 以程序为中心输入流输出流操作单元 :字节流 : 万能流字符流 : 只能操作纯文本文件功能分 :节点流 : 真实实现读写的功能流(包…...

【MySQL】P8 多表查询(2) - 连接查询 联合查询

连接查询以及联合查询多表查询概述连接查询内连接隐式内连接显式内连接外连接左外连接右外连接自连接联合查询多表查询概述 建表语句见上一篇博文:https://blog.csdn.net/weixin_43098506/article/details/129402302 e.g.e.g.e.g. select * from emp, dept where e…...

QML动画(Animator)

在Qt5.2之后,引入Animator动画元素。这种方式可以直接所用于Qt Quick的场景图形系统,这使得基于Animator元素的动画及时在ui界面线程阻塞的情况下仍然能通过图形系统的渲染线程来工作,比传统的基于对象和属性的Animation元素能带来更好的用户…...

Git 分支操作【解决分支冲突问题】

1. 什么是分支 在版本控制过程中,同时推进多个任务,为每个任务,我们就可以创建每个任务的单独分支。使用分支意味着程序员可以把自己的工作从开发主线上分离开来,开发自己分支的时候,不会影响主线分支的运行。对于初学…...

盘点全球10大女性技术先驱

盘点全球10大女性技术先驱 人们普遍认为技术是男性主导的领域,但事实,技术或编程与性别无关,几乎任何人都可以成为技术大神。已经有很多案例证明女性同样可以在技术领域施展才能。在女神节来临之际,我为大家盘点一下为编程做出卓越…...

C++之dynamic_cast

C之dynamic_cast前言dynamic_castNote:示例:前言 dynamic_cast运算符牵扯到的面向对象的多态性跟程序运行时的状态,所以不能完全的使用传统的转换方式来替代。因此是最常用,最不可缺少的一个运算符,与static_cast一样,dynamic_cas…...

JavaScript 箭头函数、函数参数

箭头函数: 箭头函数是一种更加简洁的函数书写方式箭头函数本身没有作用域(无this)箭头函数的this指向上一层,上下文决定其this基本语法:参数 > 函数体 a. 基本用法 let fn v > v; //等价于 let fn function(…...

web vue 项目 Docker化部署

Web 项目 Docker 化部署详细教程 目录 Web 项目 Docker 化部署概述Dockerfile 详解 构建阶段生产阶段 构建和运行 Docker 镜像 1. Web 项目 Docker 化部署概述 Docker 化部署的主要步骤分为以下几个阶段: 构建阶段(Build Stage)&#xff1a…...

Android Wi-Fi 连接失败日志分析

1. Android wifi 关键日志总结 (1) Wi-Fi 断开 (CTRL-EVENT-DISCONNECTED reason3) 日志相关部分: 06-05 10:48:40.987 943 943 I wpa_supplicant: wlan0: CTRL-EVENT-DISCONNECTED bssid44:9b:c1:57:a8:90 reason3 locally_generated1解析: CTR…...

day52 ResNet18 CBAM

在深度学习的旅程中,我们不断探索如何提升模型的性能。今天,我将分享我在 ResNet18 模型中插入 CBAM(Convolutional Block Attention Module)模块,并采用分阶段微调策略的实践过程。通过这个过程,我不仅提升…...

关于iview组件中使用 table , 绑定序号分页后序号从1开始的解决方案

问题描述:iview使用table 中type: "index",分页之后 ,索引还是从1开始,试过绑定后台返回数据的id, 这种方法可行,就是后台返回数据的每个页面id都不完全是按照从1开始的升序,因此百度了下,找到了…...

【快手拥抱开源】通过快手团队开源的 KwaiCoder-AutoThink-preview 解锁大语言模型的潜力

引言: 在人工智能快速发展的浪潮中,快手Kwaipilot团队推出的 KwaiCoder-AutoThink-preview 具有里程碑意义——这是首个公开的AutoThink大语言模型(LLM)。该模型代表着该领域的重大突破,通过独特方式融合思考与非思考…...

PL0语法,分析器实现!

简介 PL/0 是一种简单的编程语言,通常用于教学编译原理。它的语法结构清晰,功能包括常量定义、变量声明、过程(子程序)定义以及基本的控制结构(如条件语句和循环语句)。 PL/0 语法规范 PL/0 是一种教学用的小型编程语言,由 Niklaus Wirth 设计,用于展示编译原理的核…...

leetcodeSQL解题:3564. 季节性销售分析

leetcodeSQL解题:3564. 季节性销售分析 题目: 表:sales ---------------------- | Column Name | Type | ---------------------- | sale_id | int | | product_id | int | | sale_date | date | | quantity | int | | price | decimal | -…...

华为云Flexus+DeepSeek征文|DeepSeek-V3/R1 商用服务开通全流程与本地部署搭建

华为云FlexusDeepSeek征文|DeepSeek-V3/R1 商用服务开通全流程与本地部署搭建 前言 如今大模型其性能出色,华为云 ModelArts Studio_MaaS大模型即服务平台华为云内置了大模型,能助力我们轻松驾驭 DeepSeek-V3/R1,本文中将分享如何…...

全面解析各类VPN技术:GRE、IPsec、L2TP、SSL与MPLS VPN对比

目录 引言 VPN技术概述 GRE VPN 3.1 GRE封装结构 3.2 GRE的应用场景 GRE over IPsec 4.1 GRE over IPsec封装结构 4.2 为什么使用GRE over IPsec? IPsec VPN 5.1 IPsec传输模式(Transport Mode) 5.2 IPsec隧道模式(Tunne…...

如何在最短时间内提升打ctf(web)的水平?

刚刚刷完2遍 bugku 的 web 题,前来答题。 每个人对刷题理解是不同,有的人是看了writeup就等于刷了,有的人是收藏了writeup就等于刷了,有的人是跟着writeup做了一遍就等于刷了,还有的人是独立思考做了一遍就等于刷了。…...