数据库基础与MySQL详解:范式、架构与SQL执行过程

需积分: 8 0 下载量 148 浏览量 更新于2024-08-05 收藏 600KB PDF 举报
数据库是信息系统的核心组成部分,它用于组织、存储和管理大量数据。本文将概述数据库设计中的三大范式以及MySQL数据库的相关概念和技术。 **数据库三大范式** 1. **第一范式 (1NF)**: 是最基本的范式,要求数据库表中的每个字段都包含不可再分的基本数据单位,即原子值,消除重复和部分值。例如,学生表中的学号、姓名应直接表示,避免如(学号,姓名部分),以保持数据完整性。 2. **第二范式 (2NF)**: 建立在1NF之上,要求非主属性完全依赖于主键,但可能存在数据冗余和更新异常。如上例中的专业编号和专业名称,若直接用学号关联,会导致冗余,不符合2NF。理想情况是将专业信息独立为另一个表。 3. **第三范式 (3NF)**: 要求关系模型进一步消除非主属性间的传递依赖。如学生表中,院校地址和电话与学号无直接关系,若直接存储可能导致更新或插入异常,这就不满足3NF。应尽可能使每个属性只依赖于主键。 **MySQL架构** MySQL是一个关系型数据库管理系统,其架构包括以下几个层次: - **应用层**:负责处理客户端请求,建立连接,并返回数据。它与客户端交互,执行SQL语句。 - **逻辑层**:包括SQL查询接口(如SQL Server Query Processor)、解析器(解析SQL语句)、优化器(决定执行计划)、以及Cache和buffer机制,提高查询效率。 - **数据库引擎层**:MySQL支持多种存储引擎,如MyISAM和InnoDB,分别提供不同的事务性和数据存储结构。 - **物理层**:负责底层的数据存储,如文件系统,以及日志管理,用于数据恢复和事务处理。 **SQL执行过程** 当执行SQL时,流程大致如下: 1. 客户端通过连接器进行身份验证和权限检查。 2. 查询可能先尝试缓存,但在MySQL 8.0及以后版本,这一过程已被移除。 3. 如果未命中缓存,解析器解析并检查SQL语法。 4. 优化器根据查询条件选择最佳执行计划。 5. 执行计划由存储引擎(如InnoDB)执行,获取数据后返回给客户端。 **MySQL锁机制** MySQL支持不同级别的锁,以控制并发访问: - **共享锁 (S锁) / 读锁**: 允许多个并发用户读取同一数据,互不阻塞。 - **排他锁 (X锁) / 写锁**: 阻止其他用户读写同一数据,确保数据一致性,写操作独占。 **按粒度的锁分类** - **表级锁**: 对整个表加锁,简化并发控制,但可能影响性能,因为多个并发操作会被阻塞。 - **行级锁**: 按行加锁,针对索引或无索引表进行,提高并发性,但增加加锁开销,可能导致死锁。 - **Gap锁(间隙锁)**: 仅锁定数据范围内的空隙,主要用于行级锁定的补充,如InnoDB的Next-Key Locks。 总结来说,理解和应用这些数据库原理和MySQL特性是构建高效、健壮数据库系统的关键,它们有助于确保数据的一致性、完整性和并发控制。