# 计算机考研复试数据库基础概念终极整理版 --- ## 一、数据库系统基本概念 ### 1. 数据库系统定义与特点 - **定义**:数据库(DB)是长期存储在计算机内、有组织、可共享的数据集合,数据库管理系统(DBMS)是管理数据库的核心软件,数据库系统(DBS)包含DB、DBMS、应用程序和用户。 - **核心特点**: - **数据共享性**:多用户共享数据,减少冗余。 - **数据独立性**:包括物理独立性(存储结构变化不影响逻辑结构)和逻辑独立性(模式变化不影响应用)。 - **数据持久性**:事务提交后数据永久保存。 - **统一管理**:通过DBMS实现安全性、完整性、并发控制等统一管理。 ### 2. 数据模型 - **层次模型**:树形结构,适合一对多关系(如早期文件系统)。 - **网状模型**:图形结构,支持多对多关系,但复杂度高。 - **关系模型**:二维表结构,主流模型,通过关系代数和SQL操作。 - **对象模型**:结合面向对象特性,支持复杂数据类型(如XML、JSON)。 ### 3. 数据库三级模式与二级映像 - **三级模式**: - **外模式**(用户视图):局部数据逻辑结构,如用户查询界面。 - **模式**(全局视图):全体数据的逻辑结构描述(如ER图转化后的关系模式)。 - **内模式**(存储视图):物理存储结构(如B+树索引)。 - **二级映像**: - **外模式/模式映射**:保证逻辑独立性(模式修改不影响外模式)。 - **模式/内模式映射**:保证物理独立性(存储结构修改不影响模式)。 --- ## 二、数据库系统 vs 文件系统 | **对比维度** | **文件系统** | **数据库系统** | | -------------- | ------------------------------ | --------------------------------- | | **数据冗余** | 高冗余(多个文件存储相同数据) | 低冗余(共享数据,规范化设计) | | **数据一致性** | 难以保证(分散存储) | 通过完整性约束和事务保证 | | **独立性** | 无独立性(程序与文件绑定) | 物理和逻辑独立性 | | **查询能力** | 简单查询(如文本搜索) | 复杂查询(SQL支持多表连接、聚合) | | **典型应用** | 小型数据管理(如文档存储) | 企业级应用(如银行交易系统) | --- ## 三、数据库核心组件与功能 ### 1. 数据库管理系统(DBMS)功能 - **数据定义**:通过DDL(如`CREATE TABLE`)定义模式。 - **数据操作**:通过DML(如`SELECT/INSERT`)实现增删改查。 - **事务管理**:保证ACID特性(原子性、一致性、隔离性、持久性)。 - **并发控制**:通过锁机制(共享锁S、排他锁X)避免数据冲突。 - **恢复机制**:日志文件记录操作,支持故障恢复(如UNDO/REDO)。 ### 2. 关系数据库核心概念 - **关系**:二维表,属性不可再分(1NF)。 - **键**: - **主键**:唯一标识元组,非空(实体完整性)。 - **外键**:参照其他表主键,可为空(参照完整性)。 - **完整性约束**: - **实体完整性**:主键非空且唯一。 - **用户自定义约束**:如`CHECK(age >= 18)`。 --- ## 四、事务与并发控制 ### 1. 事务ACID特性 - **原子性(Atomicity)**:事务要么全执行,要么全不执行(通过UNDO日志实现)。 - **一致性(Consistency)**:事务前后数据库状态合法(如账户总额不变)。 - **隔离性(Isolation)**:事务间互不干扰(通过锁机制实现)。 - **持久性(Durability)**:提交后数据永久存储(通过REDO日志实现)。 ### 2. 并发问题与解决方案 | **问题** | **描述** | **解决方案** | | ---------- | ------------------------ | ------------------------------- | | 丢失修改 | 后提交覆盖前提交结果 | 一级封锁协议(X锁到事务结束) | | 脏读 | 读取未提交的无效数据 | 二级封锁协议(读S锁立即释放) | | 不可重复读 | 同一事务两次读取结果不同 | 三级封锁协议(读S锁到事务结束) | | 幻读 | 范围查询结果数量变化 | 间隙锁(锁定范围) | --- ## 五、数据库设计核心理论 ### 1. 范式理论(Normalization) - **1NF**:属性不可再分(如避免多值属性)。 - **2NF**:消除非主属性对主键的部分依赖(如订单表中商品价格应依赖商品ID而非订单ID)。 - **3NF**:消除非主属性的传递依赖(如员工表中部门地址应依赖部门而非员工ID)。 - **BCNF**:消除主属性对候选键的部分/传递依赖(如课程-教师关系中,教师决定课程)。 ### 2. ER图与关系模式转化 - **实体**:矩形表示(如学生、课程)。 - **联系**:菱形表示(如选课),多对多联系需转化为独立表(如选课表含学生ID和课程ID)。 - **转换规则**: - 一对一:任一方表添加对方主键。 - 一对多:多方表添加一方主键。 - 多对多:新建关联表保存双方主键。 --- ## 六、高频考点速记 1. **数据字典**:存储元数据(如表结构、约束),用于系统维护和查询优化。 2. **视图(View)**:虚表,简化查询(如`CREATE VIEW v_student AS SELECT id, name FROM student`),支持逻辑独立性。 3. **索引类型**: - B+树索引:支持范围查询(如`WHERE age > 20`)。 - Hash索引:适合等值查询(如`WHERE id = 1001`)。 4. **存储过程与触发器**: - 存储过程:预编译SQL集合(如批量插入)。 - 触发器:事件驱动(如`AFTER INSERT`自动更新统计表)。 --- > 参考资料:王珊《数据库系统概论》核心考点 + 历年复试真题分析