📅  最后修改于: 2020-12-13 12:14:22             🧑  作者: Mango
下面列出了最常见的DBMS面试问题和答案。
DBMS是一系列程序的集合,这些程序可以帮助用户创建和维护数据库。换句话说,DBMS为我们提供了用于执行不同操作的界面或工具,例如创建数据库,向其中插入数据,从中删除数据,更新数据等。DBMS是一种将数据存储在数据库中的软件。与基于文件的系统相比,这种方法更加安全。使用DBMS,我们可以克服许多问题,例如-数据冗余,数据不一致,易于访问,更有条理和易于理解等。有一些流行的数据库管理系统的名称-MySQL,Oracle,SQL Server,Amazon简单数据库(基于云)等。
下图定义了DBMS的工作。
数据库是一个逻辑,一致且有条理的数据集合,可以轻松地对其进行访问,管理和更新。数据库(也称为电子数据库)的结构旨在有效地提供创建,插入,更新数据的便利,并以文件或文件集的形式存储在磁盘,磁带和另一类辅助设备上。数据库主要由对象(表)组成,而表包括记录和字段。字段是数据存储的基本单位,其中包含有关数据库描述的实体的特定方面或属性的信息。 DBMS用于以查询的形式从数据库中提取数据。
有关更多信息:单击此处
数据库和DBMS软件的集合一起称为数据库系统。通过数据库系统,我们可以执行许多活动,例如-
数据可以轻松存储在数据库中,并且没有数据冗余和数据不一致的问题。
必要时,将使用DBMS软件从数据库中提取数据。因此,数据库和DBMS软件的结合使人们能够以适当的准确性和安全性来存储,检索和访问数据。
有关更多信息:单击此处
Checkpoint是一种机制,其中所有以前的日志都从系统中删除并永久存储在存储磁盘中。
有两种方法可以帮助DBMS恢复和维护ACID属性,它们是维护每个事务的日志和维护影子页面。因此,在基于日志的恢复系统上,检查点已经存在。检查点是数据库引擎在崩溃后可以恢复到的那些点,它是指定的最小点,从该点可以使用事务日志记录来恢复所有提交的数据,直到崩溃点为止。
检查点就像是DBMS状态的快照。使用检查点,DBMS可以减少在重新启动期间发生后续崩溃时要完成的工作量。系统崩溃后,检查点用于恢复数据库。在基于日志的恢复系统中使用检查点。当由于系统崩溃而需要重新启动系统时,那时候我们将使用检查点。因此,我们不必从一开始就执行交易。
透明的DBMS是一种DBMS,它的物理结构对用户隐藏。物理结构或物理存储结构对DBMS的内存管理器来说是隐含的,它描述了如何在磁盘上存储数据。
投影和选择是关系代数中的一元运算。一元运算是使用单个操作数的运算。一元运算是SELECTION,PROJECTION和RENAME。
与SELECTION中一样,例如使用关系运算符-=,<=,> =等。
RDBMS代表关系数据库管理系统。它用于维护表中的数据记录和索引。 RDBMS是DBMS的一种形式,它使用该结构来识别和访问与数据库中其他数据有关的数据。 RDBMS是使您能够以最小的难度执行各种操作(例如-更新,插入,删除,操作和管理关系数据库)的系统。大多数时候,RDBMS使用SQL语言,因为它易于理解并且经常使用。
有四种类型的数据库语言:
数据库语言意味着用于更新,修改和处理数据的查询。
数据模型被指定为用于描述数据,数据关系,数据语义和约束的概念性工具的集合。这些模型用于描述实体及其属性之间的关系。
有许多数据模型:
关系模式被指定为一组属性。也称为表架构。它定义了表的名称。关系模式被称为蓝图,借助它我们可以解释如何将数据组织成表格。该蓝图不包含任何数据。
关系被指定为一组元组。关系是具有识别关键属性的一组相关属性
请参阅以下示例:
令r为包含集合元组(t1,t2,t3,…,tn)的关系。每个元组是n值t =(v1,v2,….,vn)的有序列表。
关系度是其关系模式的许多属性。关系度也称为基数,它定义为一个实体的出现次数,该数量与另一实体的出现次数相关。存在三种关系度,它们是一对一(1:1),一对多(1:M),多对一(M:M)。
关系定义为两个或多个实体之间的关联。 DBMS中存在三种类型的关系-
一对一:此处任何对象的一条记录都可以与另一对象的一条记录相关。
一对多(多对一) :此处任何对象的一条记录可以与其他对象的许多记录相关,反之亦然。
多对多:这里一个对象的多个记录可以与另一个对象的n个记录相关。
DBMS中的数据抽象是向用户隐藏无关详细信息的过程。由于数据库系统由复杂的数据结构组成,因此它使用户与数据库的交互变得可访问。
例如:我们知道大多数用户都喜欢那些具有简单GUI(意味着没有复杂处理)的系统。因此,为了使用户保持调优并简化对数据的访问,有必要进行数据抽象。除此之外,数据抽象将系统划分为不同的层次,以使工作得以指定和良好定义。
以下是数据抽象的三个级别:
物理级别:这是最低的抽象级别。它描述了如何存储数据。
逻辑级别:这是下一个更高的抽象级别。它描述了哪些数据存储在数据库中以及这些数据之间的关系。
视图级别:这是数据抽象的最高级别。它仅描述整个数据库的一部分。
例如-用户使用GUI与系统进行交互并填写所需的详细信息,但是用户不知道如何使用数据。因此,VIEW LEVEL中的抽象级别完全很高。
然后,对于程序员是下一个级别,因为在此级别中,字段和记录是可见的,并且程序员具有这一层的知识。因此,这里的抽象级别在VIEW LEVEL中有点低。
最后,描述存储块的物理级别。
数据定义语言(DDL)是命令的标准,用于定义数据库中的不同结构。最常见的DDL语句是CREATE,ALTER和DROP。这些命令用于将数据更新到数据库中。
DData操作语言(DML)是一种语言,使用户可以访问或操作由适当的数据模型组织的数据。例如-SELECT,UPDATE,INSERT,DELETE。
DML有两种类型:
程序DML或低级DML:它要求用户指定所需的数据以及如何获取这些数据。
非过程DML或高级DML:它要求用户指定所需的数据,而不指定如何获取那些数据。
DML编译器以查询评估引擎可以理解的查询语言翻译DML语句。之所以需要DML编译器,是因为DML是语法元素家族,与其他需要编译的编程语言非常相似。因此,必须使用查询评估引擎可以理解的语言来编译代码,然后以适当的输出处理那些查询。
关系代数是一种过程查询语言,它包含一组将一个或两个关系作为输入并产生新关系的操作。关系代数是关系模型的基本运算集。关系代数的决定性点是它与对数字进行运算的代数相似。
关系代数的基本运算很少:
关系演算是一种非过程查询语言,它使用数学谓词演算代替代数。关系演算不适用于诸如代数,微分,积分等数学基础。这就是为什么它也称为谓词演算。
关系演算有两种类型:
术语“查询优化”指定了一种有效的执行计划,用于评估估算成本最低的查询。当存在多种方法时,查询优化的概念就进入了框架,并且针对同一任务存在算法,然后出现了一个问题,即哪一种效率更高,而确定有效方式的过程称为查询优化。
查询优化有很多好处:
一旦DBMS通知用户事务已成功完成,即使系统在其所有更改都反映在磁盘上之前崩溃了,事务的影响也应持续。该特性称为耐久性。持久性确保一旦将事务提交到数据库中,它将被存储在非易失性存储器中,并且在此之后系统故障不再影响该数据。
规范化是根据功能关系对给定关系模式进行分析的过程。它用于最小化冗余,还用于最小化插入,删除和更新干扰。归一化被认为是必不可少的过程,因为它用于避免数据冗余,插入异常,更新异常,删除异常。
最常用的范式是:
非规范化是提高数据库性能和添加冗余数据的过程,该过程有助于消除复杂数据。非规范化是数据库优化技术的一部分。此过程用于避免使用复杂且昂贵的联接。归一化不是指不进行归一化,而是归一化发生在归一化之后。在此过程中,首先,将使用规范化过程删除数据的冗余,而不是通过非规范化过程,我们将根据需要添加冗余数据,以便我们可以轻松避免昂贵的联接。
功能依赖是规范化的起点。当两个属性之间的关系允许您唯一地确定相应属性的值时,它存在。功能依赖关系也称为数据库依赖关系,它定义为当关系中的一个属性唯一确定另一个属性时发生的关系。它写为A-> B,这意味着B在功能上依赖于A。
ER模型是Entity-Relationship模型的简称。该模型基于真实世界。它包含必要的对象(称为实体)以及这些对象之间的关系。这里的主要对象是实体,该实体的属性,关系集,该关系集的属性可以以ER图的形式映射。
在ER图中,实体用矩形表示,关系用菱形表示,属性是实体的特征并用椭圆表示,数据流用直线表示。
实体是数据库中的一组属性。实体可以是实际存在于此世界中的现实世界对象。所有实体都有其属性,这些属性在现实世界中被视为对象的特征。
例如:在公司的员工数据库中,可以将员工,部门和名称视为实体。这些实体具有某些特征,这些特征将成为相应实体的属性。
实体类型被指定为具有相同属性的实体集合。实体类型通常对应于数据库中的一个或几个相关表。定义或唯一标识实体的特征或特性称为实体类型。
例如,学生以student_id,系和课程为特征。
实体集指定数据库中特定实体类型的所有实体的集合。实体集称为共享相同属性的所有实体的集。
例如,一组人,一组学生,一组公司等。
实体类型的扩展被指定为特定实体类型的实体的集合,这些实体被分组为一个实体集。
没有足够属性来形成主键的实体集称为弱实体集。弱实体集的成员称为从属实体。弱实体集没有主键,但是我们需要一种方法来区分实体集中依赖一个特定强实体集的所有那些条目。
属性是指数据库组件。它用于描述实体的属性。可以将属性定义为实体的特征。实体可以使用属性进行唯一标识。属性表示数据库行中的实例。
例如:如果一个学生是表中的实体,则年龄将是该学生的属性。
数据完整性是维护数据库的重要方面。因此,通过实施一系列规则,可以在数据库系统中强制执行数据完整性。这些完整性集合称为完整性规则。
DBMS中有两个完整性规则:
实体完整性:它指定“主键不能具有NULL值”。
参照完整性:它指定“外键可以是NULL值,也可以是其他关系的主键值
扩展名:扩展名是任何情况下表中存在的元组数。它随着元组的创建,更新和销毁而改变。数据库中的实际数据经常更改。因此,数据库在特定时间的数据称为扩展或数据库状态或快照。它是时间相关的。
强度:强度也称为数据模式,并定义为数据库的描述,在数据库设计过程中进行指定,并且预期保持不变。 Intension是一个常量值,它提供表的名称,表的结构以及对其施加的约束。
System R是1974年至1979年在IBM San Jose研究中心设计和开发的。 System R是SQL的第一个实现,SQL是标准的关系数据查询语言,也是第一个证明RDBMS可以提供更好的事务处理性能的系统。它是一个原型,旨在表明可以构建一个可以在现实环境中使用的关系系统来解决现实问题。
以下是系统R的两个主要子系统:
数据独立性指定“应用程序独立于数据的存储结构和访问策略”。它使您能够在一个级别上修改模式定义,而无需在下一个更高级别上更改模式定义。
它使您能够在一个级别中修改模式定义,而不会影响下一个更高级别的模式定义。
有两种类型的数据独立性:
物理数据独立性:物理数据是存储在数据库中的数据。它是位格式。物理级别的修改不应影响逻辑级别。
例如:如果我们要操作任何不应该更改表格式的表中的数据。
逻辑数据独立性:有关数据库的数据中的逻辑数据。它基本上定义了结构。如表存储在数据库中。逻辑级别的修改不应影响视图级别。
例如:如果我们需要修改任何表格的格式,则该修改不应影响其中的数据。
注意:逻辑数据独立性更难实现。
以下是数据抽象的三个级别:
物理级别:这是最低的抽象级别。它描述了如何存储数据。
逻辑级别:这是下一个更高的抽象级别。它描述了哪些数据存储在数据库中以及这些数据之间的关系。
视图级别:这是数据抽象的最高级别。它仅描述整个数据库的一部分。
例如-用户使用GUI与系统进行交互并填写所需的详细信息,但用户不知道如何使用数据。因此,VIEW LEVEL中的抽象级别绝对很高。
然后,对程序员来说是下一个级别,因为在此级别中,字段和记录是可见的,并且程序员具有这一层的知识。因此,这里的抽象级别在VIEW LEVEL中有点低。
最后,描述存储块的物理级别。
Join运算是关系代数中最有用的活动之一。这是从两个或多个关系中合并信息的最常用方法。联接总是根据相同或相关的列执行。 SQL的最复杂查询涉及JOIN命令。
有以下几种类型的联接:
1NF是第一个范式。这是可以在数据库中实现的最简单的规范化类型。 1NF的主要目标是:
2NF是第二范式。如果满足以下条件,则称该表为2NF:
3NF代表第三范式。如果满足以下条件,则在3NF中调用数据库:
哪里:
X-> Y
Y不-> X
Y-> Z所以X-> Z
BCMF代表Boyce-Codd Normal Form 。它是3NF的高级版本,因此也称为3.5NF。 BCNF比3NF严格。
满足以下条件的表符合BCNF:
ACID属性是一些基本规则,每个事务都必须满足这些规则以保持完整性。这些属性和规则是:
原子性:原子性通常被称为“全有或全无规则”。这意味着所有组件都被视为一个单元,它们要么运行完成,要么根本不执行。
一致性:此属性表示数据的一致性。一致性意味着在事务之前和之后数据库是一致的。
ISOLATION:此属性表明可以并发执行事务数,而不会导致数据库状态不一致。
耐用性:此属性可确保一旦提交事务,它将存储在非易失性内存中,并且系统崩溃也不再影响它。
存储过程是一组已创建并存储在数据库中的SQL语句。存储的过程增加了可重用性,因为这里将代码或过程存储到系统中并一次又一次地使用,这使工作变得容易,花费更少的处理时间并降低了系统的复杂性。因此,如果您有需要再次使用的代码,则保存该代码并在需要时调用该代码。
DELETE命令:DELETE命令用于根据我们在WHERE子句中提供的条件从表中删除行。
TRUNCATE命令:TRUNCATE命令用于从表中删除所有行(完整数据)。它类似于没有WHERE子句的DELETE命令。
2层架构与基本客户端服务器相同。在两层体系结构中,客户端上的应用程序可以直接与服务器端的数据库进行通信。
3层架构包含客户端和服务器之间的另一层。 3层体系结构的引入是为了使用户易于使用,因为它提供了GUI,这使系统更安全并且更易于访问。在这种体系结构中,客户端上的应用程序与服务器上的应用程序进行交互,服务器上的应用程序进一步与数据库系统进行通信。
您必须使用结构化查询语言(SQL)与RDBMS进行通信。使用SQL查询,我们可以将输入提供给数据库,然后在处理查询后,数据库将为我们提供所需的输出。
共享锁:共享锁是读取数据项所必需的。在共享锁中,许多事务可能对同一数据项持有锁。如果允许多个事务读取数据项,则称为共享锁。
排他锁:当任何事务即将执行写操作时,数据项上的锁就是排他锁。因为,如果我们允许多个事务,那么这将导致数据库中的不一致。
有以下几种类型的键:
主键:主键是表中的一个属性,可以唯一地标识表中的每个记录。每张桌子都是强制性的。
候选键:候选键是可以唯一标识元组的属性或属性集。可以从这些属性中选择主键。
超级键:超级键是一组可以唯一标识元组的属性。超级键是候选键的超集。
外键:外键是一个表中的主键,与另一个表有关系。它充当表之间的交叉引用。