为了巩固你在 DBMS 中的知识和概念,我们在这里列出了最常见的 DBMS 面试问题,以帮助你在面试中胜出!
基本的DBMS常见面问题和答案合集
1. DBMS 是什么意思,它的用途是什么?用例子解释 RDBMS。
DBMS面问题解析:顾名思义,DBMS 或数据库管理系统是一组使用户能够创建和维护数据库的应用程序或程序。DBMS 提供了一个工具或接口,用于对数据库执行各种操作,如插入、删除、更新等。与基于文件的系统相比,它是一种能够更紧凑、更安全地存储数据的软件。DBMS系统帮助用户克服数据库中的数据不一致、数据冗余等问题,使其使用起来更加方便和有条理。
流行的 DBMS 系统的例子有文件系统、XML、Windows 注册表等。
RDBMS 代表关系数据库管理系统,在 1970 年代推出,用于比 DBMS 更有效地访问和存储数据。与将数据存储为文件的 DBMS 相比,RDBMS 以表的形式存储数据。与 DBMS 相比,将数据存储为行和列可以更轻松地在数据库中定位特定值,并使其更高效。
流行的 RDBMS 系统的例子有 MySQL、Oracle DB 等。
2. DBMS常见面问题有哪些:数据库是什么意思?
数据库是可以轻松更新、访问和管理的有组织、一致且符合逻辑的数据集合。数据库主要包含由记录和字段组成的表或对象集(使用 create 命令创建的任何内容都是数据库对象)。元组或行代表表中的单个条目。属性或列表示数据存储的基本单位,其中包含有关表特定方面的信息。DBMS 以用户给出的查询的形式从数据库中提取数据。
3. 提到传统的基于文件的系统存在哪些问题使 DBMS 成为更好的选择?
传统的基于文件的系统没有索引,这让我们只能选择扫描整页,从而使访问内容变得乏味和超慢。另一个问题是冗余和不一致,因为文件有许多重复和冗余数据,更改其中一个会使所有数据不一致。在传统的基于文件的系统中访问数据更加困难,因为其中的数据是无组织的。
另一个问题是缺乏并发控制,与 DBMS 相比,多个操作可以同时处理单个文件,这导致一个操作锁定整个页面。
完整性检查、数据隔离、原子性、安全性等是传统的基于文件的系统的一些其他问题,DBMS 为这些问题提供了一些很好的解决方案。
4. 解释 DBMS 的一些优点。
以下是使用 DBMS 的几个优点。
- 数据共享:来自单个数据库的数据可以由多个用户同时共享。这种共享还使最终用户能够对数据库环境中的变化做出快速反应。
- 完整性约束:此类约束的存在允许以有组织和精炼的方式存储数据。
- 控制数据库中的冗余:通过提供一种将所有数据集成到单个数据库中的机制来消除数据库中的冗余。
- 数据独立性:这允许在不改变任何正在执行的应用程序的组成的情况下更改数据结构。
- 提供备份和恢复功能:可以配置为自动创建数据备份并在需要时恢复数据库中的数据。
- 数据安全: DBMS 提供了必要的工具,使数据的存储和传输更加可靠和安全。身份验证(授予用户受限访问权限的过程)和加密(加密敏感数据,如 OTP、信用卡信息等)是一些用于保护 DBMS 中数据的流行工具。
5. 解释 DBMS 中存在的不同语言。
以下是 DBMS 中存在的各种语言:
- DDL(数据定义语言): 它包含定义数据库所需的命令。
例如,创建、更改、删除、截断、重命名等。 - DML(数据操作语言):它包含操作数据库中存在的数据所需的命令。
例如,选择、更新、插入、删除等。 - DCL(数据控制语言): 它包含处理数据库系统的用户权限和控制所需的命令。
例如,授予和撤销。 - TCL(事务控制语言): 它包含处理数据库事务所需的命令。
例如,COMMIT、ROLLBACK 和 SAVEPOINT。
6. DBMS 中的 ACID 属性是什么意思?
ACID 代表 DBMS 中的原子性、一致性、隔离性和持久性,这些属性可确保以安全可靠的方式在多个用户之间共享数据。
- 原子性:此属性反映了执行整个查询或根本不执行任何操作的概念,这意味着如果数据库中发生更新,则该更新要么反映在整个数据库中,要么根本不反映。
- 一致性:此属性可确保数据库中事务前后的数据保持一致。
- 隔离性:此属性可确保每个事务独立于其他事务发生。这意味着正在进行的事务的状态不会影响另一个正在进行的事务的状态。
- 持久性:此属性可确保数据在系统故障或重启的情况下不会丢失,并以与系统故障或重启之前相同的状态存在。
7. 数据库中的 NULL 值与空格或零相同吗?
不,NULL 值与零和空格的值有很大不同,因为与表示字符和零表示数字的空格相比,它表示已分配的、未知的、不可用的或不适用的值。
示例:学生选择的“number_of_courses”中的NULL 值表示其值未知,而其中的0 表示该学生没有选择任何课程。
中级DBMS常见面问题和答案合集
8. 数据仓库是什么意思?
DBMS面问题解析:从多个来源收集、提取、转换和加载数据并将它们存储到一个数据库中的过程称为数据仓库。数据仓库可以被视为一个中央存储库,数据从事务系统和其他关系数据库流出,用于数据分析。数据仓库包含支持组织决策过程的各种组织的历史数据。
9. 解释 DBMS 中不同级别的数据抽象。
向用户隐藏不相关细节的过程称为数据抽象。数据抽象可以分为3个层次:
- 物理层: 最低层,由DBMS管理。此级别由数据存储描述组成,此级别的详细信息通常对系统管理员、开发人员和用户隐藏。
- 概念或逻辑级别: 它是开发人员和系统管理员工作的级别,它决定了数据库中存储了哪些数据以及数据点之间的关系。
- 外部或视图级别:该级别仅描述数据库的一部分,并向用户隐藏表模式及其物理存储的详细信息。查询的结果是视图级数据抽象的一个例子。视图是通过从数据库中存在的一个或多个表中选择字段而创建的虚拟表。
10. DBMS常见面问题有哪些:实体关系 (ER) 模型是什么意思?解释 DBMS 中的术语实体、实体类型和实体集。
实体关系模型是一种数据库设计的图解方法,其中现实世界的对象被表示为实体,并提到了它们之间的关系。
- 实体:实体被定义为具有代表该特定对象特征的属性的现实世界对象。例如,学生、员工或教师代表一个实体。
- 实体类型:实体类型被定义为具有相同属性的实体的集合。数据库中的一个或多个相关表代表一种实体类型。实体类型或属性可以理解为唯一标识实体的特征。例如,student 代表一个实体,该实体具有 student_id、student_name 等属性。
- 实体集:实体集可以定义为数据库中特定实体类型中存在的所有实体的集合。例如,所有学生、员工、教师等的集合代表一个实体集。
11. 解释 DBMS 中表之间的不同类型的关系。
以下是 DBMS 系统中表之间不同类型的关系:
- 一对一关系: 当表 X 中的特定行链接到表 Y 中的单个行时,应用这种类型的关系。
- 一对多关系:当表 X 中的单行与表 Y 中的多行相关时,应用这种类型的关系。
- 多对多关系:当表 X 中的多行可以链接到表 Y 中的多行时,应用这种类型的关系。
- 自引用关系:当表 X 中的特定行与同一个表相关联时,应用这种类型的关系。
12. 解释数据库中内涵和外延的区别。
以下是数据库中内涵和外延的主要区别:
- 内涵:内涵或俗称的数据库模式用于定义数据库的描述,并在数据库设计期间指定,并且大部分保持不变。
- 扩展:另一方面,扩展是对任何给定时间点数据库中存在的元组数量的度量。数据库的扩展也称为数据库的快照,它的值随着元组在数据库中的创建、更新或销毁而不断变化。
13. 解释 DBMS 中 DELETE 和 TRUNCATE 命令之间的区别。
DELETE 命令:该命令用于根据 WHERE 子句提供的条件从表中删除行。
- 它只删除 WHERE 子句指定的行。
- 如果需要,它可以回滚。
- 它维护一个日志以在删除之前锁定表的行,因此它很慢。
TRUNCATE 命令:从数据库中的表中删除完整数据需要此命令。它就像一个没有 WHERE 子句的 DELETE 命令。
- 它从数据库的表中删除完整的数据。
- 即使需要,它也可以回滚。(截断可以在某些数据库中回滚,具体取决于它们的版本,但这可能很棘手并可能导致数据丢失)。查看此链接了解更多详情
- 它不维护日志并立即删除整个表,因此速度很快。
14.什么是锁。解释数据库中事务期间共享锁和排他锁之间的主要区别。
DBMS面问题解析:数据库锁是一种保护共享数据不被两个或多个数据库用户同时更新的机制。当单个数据库用户或会话获得锁时,在释放锁之前,其他数据库用户或会话都不能修改该数据。
- 共享锁:读取数据项需要共享锁,许多事务可能在共享锁中对同一数据项持有锁。允许多个事务读取共享锁中的数据项。
- 排他锁:排他锁是对任何即将执行写操作的事务的锁。这种类型的锁不允许一个以上的事务,因此可以防止数据库中的任何不一致。
15.归一化和非归一化是什么意思?
规范化是通过将数据组织到多个表中来减少冗余的过程。规范化可以更好地利用磁盘空间,并且更容易维护数据库的完整性。
反规范化是规范化的逆过程,它将已规范化的表合并到一个表中,从而使数据检索变得更快。JOIN 操作允许我们通过反转规范化来创建数据的非规范化形式。
高级DBMS常见面问题和答案合集
16. 解释 DBMS 中不同类型的规范化形式。
以下是 DBMS 中的主要规范化形式:
将上表 1 视为理解不同归一化形式的参考示例。
- 1NF:它被称为第一范式,是你可以在数据库中实现的最简单的规范化类型。处于第一范式的表应满足以下条件:
- 每列必须有一个值并且应该是原子的。
- 应该删除同一个表中的重复列。
- 应该为每组相关数据创建单独的表格,并且每行都应该用唯一的列标识。
表 1 转换为 1NF 形式
- 2NF:它被称为第二范式。处于第二范式的表应满足以下条件:
- 该表应在其 1NF 中,即满足 1NF 的所有条件。
- 表的每个非主属性都应该在功能上完全依赖于主键,即每个非键属性都应该依赖于主键,这样如果删除了任何键元素,那么即使是 non_key 元素也将被保存在数据库。
将 Table-1 分成 2 个不同的表以将其移动到 2NF。
- 3NF:它被称为第三范式。处于第二范式的表应满足以下条件:
- 该表应在其 2NF 中,即满足 2NF 的所有条件。
- 同一个表中的任何属性都没有一个属性的传递函数依赖。
将 Table-1 分成 3 个不同的表以将其移动到 3NF。
- BCNF: BCNF 代表 Boyce-Codd Normal Form,是 3NF 的高级形式。出于同样的原因,它也被称为 3.5NF。BCNF 范式的表应满足以下条件:
- 该表应在其 3NF 中,即满足 3NF 的所有条件。
- 对于任何属性 A 对 B
(A->B) 的每个函数依赖,A 应该是表的超级键。它只是暗示如果 B 是主要属性,则 A 不能是非主要属性。
17. DBMS常见面问题有哪些:解释数据库中不同类型的键。
数据库中主要有7种键:
- 候选键:候选键代表一组可以唯一标识一个表的属性。每个表可能有多个候选键。可以选择所有候选键中的一个键作为主键。在下面的示例中,因为 studentId 和 firstName 可以被视为候选键,因为它们可以唯一标识每个元组。
- 超级键:超级键定义了一组可以唯一标识一个元组的属性。候选键和主键是超键的子集,换句话说,超键是它们的超集。
- 主键:主键定义了一组用于唯一标识每个元组的属性。在下面的示例中, studentId 和 firstName 是候选键,可以选择其中任何一个作为主键。在给定的示例中,studentId 被选为 student 表的主键。
- 唯一键:唯一键与主键非常相似,除了主键不允许列中的 NULL 值,但唯一键允许它们。所以本质上唯一键是具有 NULL 值的主键。
- Alternate Key:所有没有被选为主键的候选键都被认为是Alternate Keys。在下面的示例中,名字和姓氏是数据库中的备用键。
- 外键: 外键定义了一个属性,该属性只能采用一个表中存在的值与另一个表中存在的属性共有的值。在下面的示例中,Student 表中的 courseId 是 Course 表的外键,因为这两个表都包含 courseId 作为其属性之一。
- 复合键: 复合键是指可以唯一标识表中每个元组的两列或多列的组合。在下面的示例中,可以将 studentId 和 firstname 分组以唯一标识表中的每个元组。
18. DBMS常见面问题和答案合集:解释 DBMS 中 2 层和 3 层架构之间的区别。
DBMS面问题解析:2层体系结构是指其中在客户端应用程序直接与在服务器端数据库,不会参与任何中间件通信的客户端-服务器体系结构。
示例– 使用 MS-Access 或铁路预订系统等创建的联系人管理系统。
上图表示 DBMS 中的 2 层架构。
在3层架构包含了客户端和服务器提供GUI给用户,使系统更加安全和方便之间的另一层。在这种类型的架构中,客户端的应用程序与服务器端的应用程序交互,服务器端的应用程序进一步与数据库系统进行通信。
示例- 设计包含文本框、标签、按钮或 Internet 上的大型网站等的注册表单。
上图表示 DBMS 中的 3 层架构。