这篇博客整理了数据库部分的重要问答题。
1、请简要阐述数据库和文件系统的主要区别和优点。
回答:
- 数据管理方式:文件系统把数据以文件形式存储在磁盘,按文件和目录管理数据;数据库用特定数据模型,规则更严格。
- (优点:数据结构化:数据库按照特定的数据模型对数据进行结构化组织,能更清晰地表达数据之间的关系。通过表和表之间的关联,可以方便地表示实体之间的复杂关系,而文件系统难以处理这种复杂的关系结构。)
- 数据独立性:文件系统数据与程序耦合高,数据的逻辑结构或物理结构改变时,可能需要修改应用程序;数据库有物理和逻辑独立性,存储结构改变时,应用程序无需修改,较稳定。
- (优点:当数据库的存储设备、存储方式或数据逻辑结构发生变化时,应用程序不需要进行大规模修改,降低了开发和维护成本。)
- 数据共享性:文件系统数据共享性差,需复杂文件复制和同步;数据库允许多用户并发访问,通过并发控制机制保证数据的一致性和完整性。
- (优点:数据共享性好:多个用户和应用程序可以同时访问数据库中的数据,提高了数据的利用率)
- 数据冗余与一致性:文件系统中,不同应用程序可能会重复存储相同的数据,导致数据冗余度高,且难以保证数据的一致性;数据库通过设计和约束减少冗余、保证一致。
2、在什么情况下选择使用数据库而不是文件系统?
数据量大且关系复杂:当数据量较大,并且数据之间存在复杂的关联关系时,数据库的结构化存储和查询功能能更好地管理和处理数据。
多用户并发访问:如果有多个用户或应用程序需要同时访问和操作数据,数据库的并发控制机制可以保证数据的一致性和完整性。
数据安全性和完整性要求高:对于对数据安全性和完整性要求较高的应用场景,如医疗信息系统、金融系统等,数据库的安全机制和完整性约束可以提供更好的保障。
数据需要长期保存和维护:数据库管理系统提供了完善的备份和恢复机制,能够保证数据的长期可用性和可维护性。
3、数据库设计的基本步骤是什么?
- 需求分析:了解和分析用户需求。
- 概念模型设计:对用户的需求进行抽象和归纳,提炼出一些概念的东西来描述用户的需求。常用的方法是画E-R图(实体关系图)
- 逻辑模型设计:将概念模型具体化,即实现概念模型所描述的东西需要哪些具体的功能。
- 物理模型设计:对真实数据库的具体描述:表、字段、长度、数据类型等
4、索引
- 功能:当表的数据量比较大时,查询操作比较耗时,建立索引可以加快查询速度。
- 缺点:索引需要占用一定的存储空间,且基本表更新时需要维护索引表。
- 索引方式:B+树索引、Hash索引。
5、索引和键的区别
- 索引是存储在数据库中的一个物理结构,是实际存在的,相当于一本书的目录。
- 键是一个逻辑概念,分为主键和外键等。
- 主键:一条记录的唯一标识,不能重复,不能为空,用来保证数据完整性。相当于一本书中的页码。
6、视图
- 视图是存储在数据库中的SQL查询语句。是由数据库中的一张或多张表导出的虚拟表,类似于查询函数,方便用户对数据进行查询操作。
- 基本表中的数据发生变化,从视图中查询出来的数据也会随之发生变化。
- 优点:简化了查询操作;提高了数据库的安全性。
7、触发器
- 用户对表进行增删改操作会引起数据库系统自动激活相应的触发器完成某种操作。
- 例如:有一张期中考试成绩表和一张期末考试成绩表。期末考试后某一位同学退学了,需要把他的所有信息从表中删除。可以建立一个触发器,当从期末考试成绩表中删除某个同学的信息时,会引起在期中考试成绩表中也把该同学的信息删除。
8、存储过程
- 存储过程是预编译的SQL语句集合,就像函数一样,只需创建一次,即可在程序中进行多次调用,且比执行单纯的SQL语句更快。
9、事务
- 事务是对数据库进行操作的一个基本单位。
- ACID特性(数据库事务正确执行的四个基本要素)
- 隔离性:一个事务的执行不能被其他事务干扰。
- 原子性:事务是一个不可分割的单位,即一次执行完。
- 一致性:事务执行的结果必须使数据库从一个一致性状态变到另一个一致性状态。
- 永久性:一旦事务被提交,它对数据库的改变就是永久的。
10、在数据库中为什么要并发控制?
- 数据库是共享资源,多个事务可以同时对数据库进行操作。当多个事务并发地操作数据库时,就可能存在同时读和写数据的情况(写后读,读后写,写后写),如果不对并发操作加以控制,就可能存在数据存取错误,破坏数据库的一致性,如丢失修改、不可重复读和读取脏数据。
11、锁
- 锁是最常见的并发控制机制,是防止其他事务访问指定资源,实现并发控制的一种手段。
- 排他锁(写锁):当数据被加上写锁后,其他事务不能对该数据进行读和写操作。
- 共享锁(读锁):当数据被加上读锁后,只允许其他事务对该数据进行读操作,不允许写操作。
12、一、二、三级封锁协议
- 一级封锁协议:事务在修改数据之前加上写锁,直到事务结束才释放。该协议可以防止丢失修改。
- 二级封锁协议:在一级封锁协议的基础上,事务在读取数据之前对其加读锁,读完后释放读锁。该协议可以防止读取脏数据。
- 三级封锁协议:在一级封锁协议的基础上,事务在读取数据之前对其加读锁,直到事务结束才释放读锁。该协议解决了不可重复读。
13、介绍数据库的增删改查操作
- 增:向数据库表添加新记录,SQL 中用
INSERT INTO语句 。语法为INSERT INTO table_name (column1, column2, …) VALUES (value1, value2, …)。如INSERT INTO students (name, age, gender) VALUES ('张三', 20, '男')。 - 删:从表中删除记录,用
DELETE FROM语句 。语法是DELETE FROM table_name WHERE condition。例如DELETE FROM students WHERE name = '李四',不写WHERE会删全表。 - 改:修改表中已有记录,通过
UPDATE语句 。语法为UPDATE table_name SET column1 = value1, column2 = value2, … WHERE condition。如UPDATE students SET age = 21 WHERE name = '张三'。 - 查:从表获取数据,用
SELECT语句 。语法是SELECT column1, column2, … FROM table_name WHERE condition。例如SELECT name, age FROM students WHERE age > 18。
14、在数据库中,执行增删改查操作时需要注意哪些问题?
- 增:确保插入值与列数据类型、约束匹配,注意自增长或默认值列。
- 删:谨慎操作,不写
WHERE易丢大量数据,执行前先查询确认,留意外键约束。 - 改:条件要准确,更新后数据符合约束。
- 查:关注性能,合理用索引,确保查询逻辑正确,避免数据问题。
15、在实际应用场景中,增删改查操作是如何协同工作的
以电商系统为例:
- 增:新用户注册,将信息插入
users表。 - 删:用户注销,删
users表记录及相关订单、购物车记录。 - 改:用户改个人信息、订单商品数量,更新对应表记录。
- 查:用户登录查
users表验证信息,查看订单、商家分析销售数据都需查询。 增删改查协同实现电商系统功能 。
16、三大范式(重要)
- 定义:数据库范式是数据库设计规范。遵循它可减少数据冗余,保证完整性和一致性,避免插入、删除、更新异常,让数据库结构清晰,便于维护和扩展。
- 第一范式(1NF):表中每列是不可再分的原子值,无重复组或嵌套结构,如学生表 “联系方式” 应拆为电话和邮箱字段。 即每一个字段的值必须具有原子性。
- 第二范式(2NF):满足 1NF,在第一范式的基础上,所有非主键字段,都必须完全依赖主键,如订单表 “商品价格” 要依赖(订单编号,商品编号)。 即一张表只描述一件事情。
(完全依赖:通过AB能得出C,但是A和B单独得不出C,那么说C完全依赖于AB。)
- 第三范式(3NF):满足 2NF,在第二范式的基础上,数据表中的所有非主键字段不能依赖于其他非主键字段,如员工表 “部门名称” 不应间接依赖 “员工编号”。即非主键字段之间是相互独立的
-
范式并非越高越好:高范式减少冗余、增强一致性,但会增加表数量和关联复杂度,降低查询性能。实际应用中,为提高性能可适当保留冗余,如统计分析场景。设计时要权衡业务需求和性能。
17、除了范式,数据库设计还应考虑哪些因素?
-
需求分析
-
性能优化
-
数据完整性和一致性
-
可扩展性和灵活性
-
安全性
-
备份与恢复策略

被折叠的 条评论
为什么被折叠?



