JAVA面试专题:数据库设计与优化

需积分: 1 0 下载量 54 浏览量 更新于2024-08-05 收藏 701KB PDF 举报
JAVA_mysql面试专题18道 在本篇资源中,我们将讨论数据库 normalization 的三个范式、数据库优化经验、索引的种类和工作机制等知识点。 **数据库 normalize 三范式** 数据库 normalization 是一种将关系型数据库设计成符合某些规则的过程,以减少数据冗余和依赖关系。数据库 normalization 的三个范式分别是第一范式(1NF)、第二范式(2NF)和第三范式(3NF)。 1. **第一范式(1NF)**:字段具有原子性,不可再分。所有关系型数据库系统都满足第一范式,数据库表中的字段都是单一属性的,不可再分。 2. **第二范式(2NF)**:在第一范式(1NF)的基础上建立起来的,即满足第二范式(2NF)必须先满足第一范式(1NF)。要求数据库表中的每个实例或行必须可以被惟一地区分。通常需要为表加上一个列,以存储各个实例的惟一标识。这个惟一属性列被称为主关键字或主键。 3. **第三范式(3NF)**:满足第三范式(3NF)必须先满足第二范式(2NF)。简而言之,第三范式(3NF)要求一个数据库表中不包含已在其它表中已包含的非主关键字信息。所以第三范式具有如下特征:每一列只有一个值、每一行都能区分、每一个表都不包含其他表已经包含的非主关键字信息。 **数据库优化经验** 1. **使用 PreparedStatement**:PreparedStatement 一般来说比 Statement 性能高。一个 SQL 发给服务器去执行,涉及步骤:语法检查、语义分析、编译、缓存。 2. **外键约束的影响**:有外键约束会影响插入和删除性能,如果程序能够保证数据的完整性,那在设计数据库时就去掉外键。 3. **适当冗余**:表中允许适当冗余,譬如,主题帖的回复数量和最后回复时间等。 4. **UNION 和 UNION ALL**:UNION 和 UNION ALL 都是将两个结果集合并为一个,但这两者从使用和效率上来说都有所不同。 UNION 在进行表链接后会筛选掉重复的记录, Union All 不会去除重复记录。 Union 将会按照字段的顺序进行排序;Union All 只是简单的将两个结果合并后就返回。 **索引的种类** 索引是数据库管理系统中一个排序的数据结构,它可以提高数据检索的速度。 1. **普通索引**:即针对数据库表创建索引。 2. **唯一索引**:与普通索引类似,不同的是:MySQL 数据库索引列的值必须唯一,但允许有空值。 3. **主键索引**:它是一种特殊的唯一索引,不允许有空值。一般是在建表的时候同时创建主键索引。 4. **组合索引**:为了进一步榨取 MySQL 的效率,就要考虑建立组合索引。即将数据库表中的多个字段联合起来作为一个组合索引。 **索引的工作机制** 数据库索引是一种特殊的数据结构,它可以提高数据检索的速度。索引的工作机制是将数据库表中的数据按照一定的顺序排列,使得数据检索变得更加快速和高效。