1、数据库的四个基本概念。
(1)数据:描述事务的符号记录称为数据。
(2)数据库:数据库是长期存储在计算机内、有组织、可共享的大量数据的集合。
(3)数据库管理系统:数据库管理系统是一个大型复杂的软件系统,主要包括功能有:①数据定义功能;②数据组织、存储和管理;③数据操纵功能;④数据库的事物管理和运行管理;⑤数据库的建立和维护功能。
(4)数据库系统:数据库系统是由数据库、数据库管理系统、应用程序和数据库管理员组成的存储、管理、处理和维护数据的系统。
2、相比人工管理和文件系统,数据库系统有什么特点?
(1)数据结构化,这是数据库的主要特征之一,也是数据库系统与文件系统的本质区别。
(2)数据的共享性高、冗余度低且易扩充;
(3)数据独立性高,数据独立性包括物理独立性和逻辑独立性。
(4)数据由数据库管理系统统一管理和控制。
3、概念模型的一些概念。
(1)实体:客观存在并可相互区别的事物称为实体。
(2)属性:实体所具有的某一特性称为属性。
(3)码:唯一标识实体的属性称为码。
(4)实体型:用实体名及其属性名集合来抽象刻画同类实体,称为实体型。
(5)实体集:同一类型实体的集合称为实体集。
4、请简单介绍数据模型的组成要素。
(1)数据结构:数据结构描述数据库的组成对象以及对象之间的联系。
(2)数据操作:数据操作是指对数据库中各种对象(型)的实例(值)允许执行的操作的集合,包括操作及有关操作规则。
(3)数据的完整性约束条件:任何关系必须满足实体完整性和参照完整性两个条件。
5、简单介绍数据库系统的三级模式结构。
(1)模式:模式也称逻辑模式,是数据库中全体数据的逻辑结构和特征的描述,是所有用户的公共数据视图。
(2)外模式:外模式也称为子模式或者用户模式,它是数据库用户能够看见和使用的局部数据的逻辑结构和特征的描述,是数据库用户的数据视图,是与某一应用有关的数据的逻辑表示。
(3)内模式:内模式也称为存储模式,一个数据库只有一个内模式,它是数据物理结构和存储方式的描述,是数据在数据库内部的组织方式。
6、数据库完整性有哪三种?做个简单的介绍。
(1)实体完整性:即是定义实体的主码;
(2)参照完整性:即是定义实体的外码;
(3)自定义完整性:针对某一具体应用的数据必须满足的语义要求,比如NOT NULL
7、简单介绍下你学过的几种范式。
(1)第一范式:属性不应该是可分的。(不允许表中表)
(2)第二范式:在第一范式的基础上消除了部分函数依赖。
(3)第三范式:在第二范式的基础上消除了传递依赖。
(4)BC范式:在第三范式的基础上消除了主属性对码的部分依赖。
(5)第四范式:消除了多值依赖。
8、请描述数据库设计的步骤?(6个步骤)
(1)需求分析;
(2)概念结构设计;
(3)逻辑结构设计;
(4)物理结构设计;
(5)数据库实施;
(6)数据库运行与维护;
9、什么是事务?事务有那几个特性?做个简单的介绍。
(1)事务是用户定义的一个数据库操作序列,这些操作要么全做,要么全不做,是不可分割的工作单位。
(2)事务有四个特性:
(2.1)原子性:事务的所有操作要么全部提交成功,要么全部失败回滚。
(2.2)一致性:在一致性状态下,所有事务对一个数据的读取结果都是相同的。
(2.3)隔离性:并发执行的事务之间不能相互影响。
(2.4)持久性:一旦事务提交成功,对数据的修改是永久性的。
10、会出现哪些并发一致性的问题?
(1)丢失修改:一个事务对数据进行了修改,在事务提交之前,另一个事务对同一个数据进行了修改,覆盖了之前的修改;
(2)脏读:一个事务读取了被另一个事务修改、但未提交(进行了回滚)的数据,造成两个事务得到的数据不一致;
(3)不可重复读:在同一个事务中,某查询操作在一个时间读取某一行数据和之后一个时间读取该行数据,发现数据已经发生修改。
11、请简单介绍一下封锁的类型。
(1)排它锁/ X锁:事务对数据加上X锁时,只允许此事务读取和修改此数据,并且其它事务不能对该数据加任何锁;
(2)共享锁/ S锁:加了S锁后,该事务只能对数据进行读取而不能修改,并且其它事务只能加S锁,不能加X锁;
(3)意向锁:
(3.1)IS锁:如果对一个数据对象加IS锁,表示其后裔结点加S锁。
(3.2)IX锁:如果对一个数据对象加IX锁,表示其后裔结点加X锁。
(3.3)SIX锁:如果对一个数据对象加SIX锁,表示对它加S锁,再加IX锁。
12、什么是三级封锁协议,可以解决什么问题?
(1)一级封锁协议:事务T在修改数据R之前必须先对其加X锁,直到事务结束才释放。
(2)二级封锁协议:在一级封锁的基础上增加事务T在读取数据R之前必须先对其加S锁,读取后即可释放S锁。
(3)三级封锁协议:在一级封锁协议的基础上增加事务T在读取数据R之前必须先对其加S锁,直到事务结束才释放。
13、请分别介绍活锁和死锁。
(1)活锁:如果事务T1封锁了数据R,事务T2又请求封锁R,于是T2等待;T3也请求封锁R,当T1释放了R上的封锁之后系统首先批准了T3的请求,T2任然在等待;然后T4又请求封锁数据R,当T3释放R上的封锁之后首先批准了T4的请求……T2有可能永远等待,这就是活锁的情形。
(2)死锁:出现T1等待T2,T2等待T1的局面,T1和T2两个事务永远不能结束,形成死锁。
14、请说出预防死锁的方法。
(1)一次封锁:一次封锁要求每个事务必须一次将所有要使用的数据全部加锁,否则就不能继续执行。
(2)顺序封锁:顺序封锁是预先对数据对象规定一个封锁顺序,所有事务都按这个顺序执行封锁。
15、什么是两段锁协议?
事务必须严格分为两个阶段对数据进行加锁和解锁的操作,第一阶段加锁,第二阶段解锁。也就是说一个事务中一旦释放了锁,就不能再申请新锁了。
16、请你说下数据库索引的实现原理?
(1)数据库索引的原理是B+树。
(2)B +树是B树的变种。使用B+树比B树有许多优点,比如
(2.1)范围查询效率更高:B树需要中序遍历整个树,只B+树需要遍历叶结点中的链表;
(2.2)查询效率更加稳定:每次查询都需要从根结点到叶结点,路径长度相同,所以每次查询的效率都差不多;
(2.3)IO次数少:B+树的中间结点只存放索引,数据都存在叶结点中,因此中间结点可以存更多的数据,让索引树更加矮胖;
17、在哪些地方适合创建索引?
(1)某列经常作为最大或者最小值;
(2)经常被查询的字段;
(3)经常用作表连接的字段;
(4)经常出现在order by/group by后面的字段;
18、使用索引有什么优缺点?
(1)优点:
(1.1)加快数据的检索速度;
(1.2)可以显著减少查询中分组和排序的时间。
(1.3)通过创建唯一性索引,可以保证数据库表中每一行数据的唯一性。
(2)缺点:
(2.1)建立和维护索引消耗时间空间,更新索引很慢。