数据库面试知识点概览

本文探讨了数据库的基础概念,如关系模型、完整性约束、SQL约束、安全性措施,以及数据库设计过程、模式分解、查询优化和故障恢复策略。重点介绍了事务处理、数据独立性、索引技术和并发控制方法,为理解数据库管理和实际操作提供了全面指南。
摘要由CSDN通过智能技术生成

数据库

数据库管理系统

数据库管理系统的功能

1)从用户角度

  • 数据库定义: 定义数据库中Table的名称、标题(内含的属性名称及对该 属性的值的要求)等
  • 数据库操纵DML: 向数据库的Table中增加/删除/更新数据及对数据进行查询、检索、统计等
  • 数据库控制: 控制数据库中数据的使用—哪些用户可以使用,哪些不可以
  • 数据库维护: 转储/恢复/重组/性能监测/分析

2)从系统角度

  • 语言编译器:将用数据库语言书写的内容,翻译成DBMS可执行的命
    令。例如: DDL编译器, DML编译器, DCL编译器等;
  • 查询优化(执行引擎)与查询实现(基本命令的不同执行算法):提高数据
    库检索速度的手段;例如贯穿于数据存取各个阶段的优化程序;
  • 数据存取与索引:提供数据在磁盘、磁带等上的高效存取手段。例如:存
    储管理器,缓冲区管理器,索引/文件和记录管理器等;
  • 通信控制:提供网络环境下数据库操作与数据传输的手段
  • 事务处理
  • 各种控制程序

数据库系统结构

数据库系统的标准结构

1)三级模式

  • 外部模式:某一用户能够看到与处理的数据的结构描述
  • 概念模式:描述整个数据库中的逻辑结构,从全局角度理解/管理的数据的结构描述, 含相应的关联约束
  • 内模式:存储在介质上的数据的结构描述,含存储路径、存储方式 、索引方式等

2)两层映像

  • E-C Mapping
  • C-I Mapping

3)两级数据独立性

  • 物理数据独立性:修改内模式时尽量不影响概念模式及外模式,则达到物理数据独立性
  • 逻辑数据独立性:修改概念模式时尽量不影响外模式和应用程序
数据模型

1)数据模型:规定模式统一描述方式的模型,包括:数据结构、操作和约束

数据模型是对模式本身结构的抽象,模式是对数据本身结构形式的抽象

  • 概念模型:信息世界是对现实世界的理解与抽象
  • 逻辑模型:主要包括层次模型、网状模型、关系模型,另外还有面向对象数据模型、对象关系模型、半结构化模型等,是按计算机系统的观点对数据建模,主要用于数据库管理系统的实现。
  • 物理模型:是对数据最底层的抽象,它描述数据在系统内部的表示方式和存取方法,或在磁盘或磁带上的存储方式和存取方法,是面向计算机的

关系模型

关系模型概念

由三个部分组成

  • 描述DB各种数据的基本结构形式
  • 描述Table与Table之间所可能发生的各种操作
  • 描述这些操作所应遵循的约束条件
关系模型中的完整性约束

1)实体完整性:关系的主码中的属性值不能为空值

2)参照完整性:如果关系R1的外码Fk与关系R2的主码Pk相对应,则R1中的每一个元组的Fk值或者等于R2 中某个元组的Pk 值,或者为空值

3)用户自定义完整性:用户针对具体的应用环境定义的完整性约束条件

数据库完整性和安全性

Sql约束

1)静态约束

  • 列完整性
  • 表完整性

2)动态约束

触发器:是用户定义在关系表上的一类由事件驱动的特殊过程, 当特定的系统事件(如表的增删改查操作,事物的结束)发生时,对规则的条件进行检查,若成立则执行

数据库安全性

1)自主安全性机制

通过权限在用户之间的传递,使用户自主管理数据库安全性

DBMS将权利和用户(账户)结合在一起,形成一个访问规则表,依据该规则

表可以实现对数据库的安全性控制

2)强制安全性机制

通过对数据和用户强制分类,使得不同类别用户能够访问不同类别的数据

嵌入式语言

视图

视图是一种虚拟的表,具有和物理表相同的功能

游标

是对查询出来的结果集作为一个单元来有效的处理。游标可以定在该单元中的特定行,从结果集的当前行检索一行或多行

api
  • 嵌入式sql
  • ODBC
  • JDBC

数据库设计

数据库设计过程与设计方法

1)需求分析

2)概念数据库设计

两种设计思路:
在这里插入图片描述在这里插入图片描述

image-20210326105222535

要注意消除冲突

3)逻辑数据库设计

E-R图/IDEF1X图向关系模式的转换

注意要正确的设计数据库

4)物理数据库设计

关系模式设计

数据库范式
  • 1nf:关系中每个分量都是不可分的数据项

  • 2nf:每个非主属性都完全函数依赖于候选键

  • 3nf:不存在传递依赖

  • Bcnf:没有不依赖于候选键的函数依赖存在

  • 多值依赖:对同一x值,有一组的y值与其对应,将y值交换后的新元组仍存在

  • 4nf:若有多值依赖就一定依赖于候选键

模式分解考虑的问题

需要关注的是数据内容是否等价,数据依赖是否等价

无损连接分解及其检验算法

构造相应的表,根据函数依赖关系对表进行修改,若有一行变成a1, a2,…, an(全a), 则是无损连接分解,否则是有损连接分解

保持依赖分解及其检验算法

只需检查是否覆盖了G

最小依赖集
  • F中任一函数依赖的右部只含有一个属性
  • F中不存在这样的函数依赖X->A,使得F与F-{X->A}等价
  • F中不存在这样的函数依赖X->A,X有真子集Z使得F-{X->A}∪{Z->A}与F等价

数据库存储

磁盘的结构和特性
  • 盘面: 磁道: 扇区
  • RAID:独立磁盘冗余阵列,由多个独立的高性能磁盘驱动器组成的磁盘子系统,从而提供比单个磁盘更高的存储性能和数据冗余的技术,并发地在多个磁盘上读写数据来提高存储系统的 I/O 性能
DBMS数据存储与查询实现的基本思想

首先用户发出相应的命令,再由索引文件记录管理器控制逻辑物理映射,发出相应的页面命令,缓冲区管理器控制内存分配,再由存储管理器控制磁盘读写

数据库表与记录的映射
  • 连续分配
  • 链接分配
  • 按簇分配
  • 索引分配
文件组织方法
  • 无序记录文件(堆文件)
  • 有序记录文件
  • 散列文件–设置溢出桶
  • 聚簇文件–将具有相同或相似属性值的记录存放于连续的磁盘簇块中

事务

什么是事务

事务就是被绑定在一起作为一个逻辑工作单元的SQL语句分组

ACID特性
  • 原子性(Atomicity)

事务被视为不可分割的最小单元,事务的所有操作要么全部提交成功,要么全部失败回滚。

回滚可以用回滚日志(Undo Log)来实现,回滚日志记录着事务所执行的修改操作,在回滚时反向执行这些修改操作即可。

  • 一致性(Consistency)

数据库在事务执行前后都保持一致性状态。在一致性状态下,所有事务对同一个数据的读取结果都是相同的。

  • 隔离性(Isolation)

一个事务所做的修改在最终提交以前,对其它事务是不可见的。

  • 持久性(Durability)

一旦事务提交,则其所做的修改将会永远保存到数据库中。即使系统发生崩溃,事务执行的结果也不能丢失。

系统发生崩溃可以用重做日志(Redo Log)进行恢复,从而实现持久性。与回滚日志记录数据的逻辑修改不同,重做日志记录的是数据页的物理修改。

数据库索引

索引

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dlcmlUSH-1617080205188)(C:\Users\sydney\Desktop\复试总\复试科目\数据库.assets\image-20210326111032975.png)]

作用:提高存储表的访问速度

索引文件组织的两种方式:排序索引文件;散列索引文件

使用索引的注意事项:选择哪些属性创建索引;建立索引还需考虑索引的类型

索引的简单分类
  • 稠密索引:对于主文件中每一个记录(形成的每一个索引字段值),都有一个索引项和它对应,指明该记录所在位置

  • 稀疏索引:对于主文件中部分记录(形成的索引字段值),有索引项和它对应。要求—主文件必须是按对应索引字段属性排序存储,空间占用更少,维护任务更轻,但速度更慢

  • 主索引:对每一存储块有一个索引项

  • 辅助索引:是定义在主文件的任一或多个非排序字段上的辅助存储结构

  • 聚簇索引—是指索引中邻近的记录在主文件中也是临近存储的;

  • 非聚簇索引—是指索引中邻近的记录在主文件中不一定是邻近存储的。

  • B+树索引:非叶结点指针指向索引块,叶结点指针指向主文件的数据块或数据记录

  • 可扩展散列索引:为桶引入一间接层,即用一个指向块的指针数组来表示桶,用i表示现在索引所用到的位数

  • 线性散列索引:桶数n的选择总是使存储块的平均记录数保持与存储块所能容纳的记录总数成 一个固定的比例,例如80%。超过此比例,则桶数增长1块,分裂

并发控制

并发一致性问题
  • 丢失修改

    丢失修改指一个事务的更新操作被另外一个事务的更新操作替换

  • 读脏数据

    读脏数据指在不同的事务下,当前事务可以读到另外事务未提交的数据

  • 不可重复读

    不可重复读指在一个事务内多次读取同一数据集合。在这一事务还未结束前,另一事务也访问了该同一数据集合并做了修改,由于第二个事务的修改,第一次事务的两次读取的数据可能不一致

  • 幻影读

    幻读本质上也属于不可重复读的情况,T1 读取某个范围的数据,T2 在这个范围内插入新的数据,T1 再次读取这个范围的数据,此时读取的结果和和第一次读取的结果不同

事务调度及可串行性
  • 事务:应用程序员将一系列的数据库操作组合在一起作为一个整体进行操作和控制

  • 事务调度:一组事务的基本步(读、写、其他控制操作如加锁、解锁等)的一种执行顺序称为对这组事务的一个调度

  • 并发调度:多个事务从宏观上看是并行执行的,但其微观上的基本操作(读、写)则是交叉执行的

  • 可串行性:如果不管数据库初始状态如何,一个调度对数据库状态的影响都和某个串行调度相同,则我们说这个调度是可串行化的

  • 冲突可串行性:一个调度如果通过交换相邻两个无冲突的操作能够转换到某一个串行的调度,则称此调度为冲突可串行化的调度

基于封锁的并发控制方法

1)锁的类型:排他锁X ;共享锁S ;更新锁U ;增量锁I

2)封锁类型

  • 读写锁
  • 意向锁

3)封锁协议

  • 三级封锁协议

  • 两段锁协议

    加锁和解锁分为两个阶段进行

4)隔离级别

  • 未提交读(READ UNCOMMITTED)

    事务中的修改,即使没有提交,对其它事务也是可见的。

  • 提交读(READ COMMITTED)

    一个事务只能读取已经提交的事务所做的修改。换句话说,一个事务所做的修改在提交之前对其它事务是不可见的。

  • 可重复读(REPEATABLE READ)

    保证在同一个事务中多次读取同一数据的结果是一样的。

  • 可串行化(SERIALIZABLE)

    强制事务串行执行,这样多个事务互不干扰,不会出现并发一致性问题。该隔离级别需要加锁实现,因为要使用加锁机制保证同一时间只有一个事务执行,也就是保证事务串行执行。

基于时间戳的并发控制方法

事务在启动时刻被赋予唯一的时间戳,以示其启动顺序。 为每一数据库元素保存读时间戳和写时间戳,以记录读或写该数据元素的最 后的事务。

通过在事务读写数据时判断是否存在冲突(读写冲突、写读冲突、写写冲突)

来强制事务以可串行化的方式执行

基于有效性确认的并发控制方法

事务在启动时刻被赋予唯一的时间戳,以示其启动顺序。 为每一活跃事务保存其读写数据的集合,RS(T):事务T读数据的集合;WS(T):事务T写数据的集合。 通过对多个事务的读写集合,判断是否有冲突(存在事实上不可实现的行 为),即有效性确认,来完成事务的提交与回滚,强制事务以可串行化的方式执行

数据库查询优化

为什么要及什么是查询优化

关系代数操作执行次序对效率的影响,如何使数据库查询的执行时间最短

三个层面进行优化:

  • 语义优化:利用模型的语义及完整性规则,优化查询

  • 语法优化—逻辑层优化:利用语法结构,优化操作执行顺序

    改变关系代数的操作次序;尽可能早做选择和投影运算

  • 执行优化—物理层优化:存取路径和执行算法的选择与执行次序优化

    依据相关信息进行代价估算,并选择代价最少的例行程序及确定相应的参数

逻辑查询优化
  • 尽可能地早做选择和投影
  • 把选择与投影串接起来
  • 把投影与其前或后的二元运算结合起来
  • 把某些选择与其前的笛卡尔积合并成一个连接,转换为连接运算
  • 执行连接运算前对关系做适当预处理
  • 找出表达式里的公共子表达式
物理查询优化
  • 表空间扫描算法
  • 索引扫描排序算法

如何衡量物理查询计划的优劣呢

  • 衡量I/O访问次数

  • 衡量CPU的占用时间

  • 内存使用代价(与缓冲区数目与大小的匹配)

故障恢复

数据库故障恢复的宏观思路

故障恢复考虑如何保证事务的原子性和持久性

事务故障类型:事务故障;系统故障;介质故障

把DB由当前不正确状态恢复到已知为正确的某一状态

事务故障可通过重做事务(Redo)和撤消事务(Undo)来恢复。重做事务可保

  • 尽可能地早做选择和投影
  • 把选择与投影串接起来
  • 把投影与其前或后的二元运算结合起来
  • 把某些选择与其前的笛卡尔积合并成一个连接,转换为连接运算
  • 执行连接运算前对关系做适当预处理
  • 找出表达式里的公共子表达式
物理查询优化
  • 表空间扫描算法
  • 索引扫描排序算法

如何衡量物理查询计划的优劣呢

  • 衡量I/O访问次数

  • 衡量CPU的占用时间

  • 内存使用代价(与缓冲区数目与大小的匹配)

故障恢复

数据库故障恢复的宏观思路

故障恢复考虑如何保证事务的原子性和持久性

事务故障类型:事务故障;系统故障;介质故障

把DB由当前不正确状态恢复到已知为正确的某一状态

事务故障可通过重做事务(Redo)和撤消事务(Undo)来恢复。重做事务可保

证已提交事务的持久性,而撤销事务则消除未提交事务的影响

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值