2.数据库——关系数据库核心.md 4.5 KB

计算机考研复试--关系数据库核心知识点终极整理

一、关系模型三要素

1. 数据结构(二维表)

  • 关系:由行(元组)和列(属性)组成的二维表,每个属性不可再分(1NF)
    • 候选键:能唯一标识元组的最小属性集(如学号)
    • 主键:从候选键中选定的唯一标识(非空且唯一)
    • 外键:参照其他表主键的属性(保证参照完整性)
  • :属性的取值范围(如性别域为{'男','女'})

2. 数据操作(关系代数与SQL)

  • 基本操作
    • 选择(σ):筛选满足条件的行(如σ_{age>20}(Student))
    • 投影(π):选取指定列(如π_{name,age}(Student))
    • 连接(⋈)
    • 自然连接:自动去重相同属性(如Student ⋈ SC)
    • 外连接:保留未匹配元组(左/右/全外连接)
    • 除法(÷):查找满足所有条件的元组(如选所有课的学生)
  • 集合操作:并(∪)、差(-)、交(∩)、笛卡尔积(×)

3. 完整性约束

  • 实体完整性:主键非空且唯一(如学号不能为空)
  • 参照完整性:外键必须为其他表主键或空值(如课程号必须存在)
  • 用户定义完整性:自定义规则(如年龄≥18)

二、关系代数与SQL高频考点

1. 关系代数表达式

  • 典型题型:写出查询的关系代数表达式
    示例:查询选修"数据库"课程的学生姓名

    
    ### 2. SQL核心操作
    - **DDL**:
    

    sql

CREATE TABLE Student (

Sno CHAR(9) PRIMARY KEY,
Sname VARCHAR(20) NOT NULL

);

- **DML**:

sql -- 插入 INSERT INTO SC VALUES ('2021001', 'C001', 90);

-- 更新 UPDATE Student SET Sage=Sage+1 WHERE Sdept='CS';

-- 删除 DELETE FROM SC WHERE Grade < 60;

- **查询**:

sql -- 嵌套查询 SELECT Sname FROM Student WHERE Sno IN (SELECT Sno FROM SC WHERE Cno='C01');

-- 连接查询 SELECT Sname, Cname FROM Student NATURAL JOIN SC JOIN Course USING(Cno); ```


三、范式理论与设计

1. 范式递进规则

范式 要求 消除依赖类型
1NF 属性不可再分 -
2NF 消除非主属性对主属性的部分依赖 部分函数依赖(如学号→姓名)
3NF 消除非主属性的传递依赖 传递函数依赖(如学号→系名→系地址)
BCNF 消除主属性对候选键的部分/传递依赖 所有非平凡函数依赖左侧包含候选键

2. 设计实例

  • 反例:学生表(学号,姓名,系名,系主任)
    问题:存在传递依赖(学号→系名→系主任)
    解决:拆分为学生表(学号,姓名,系名) + 系表(系名,系主任)

四、事务与并发控制

1. ACID特性

  • 原子性:事务全做或全不做(UNDO日志实现)
  • 一致性:事务前后数据状态合法(如转账总额不变)
  • 隔离性:事务间互不干扰(通过锁机制实现)
  • 持久性:提交后永久生效(REDO日志实现)

2. 并发问题与解决方案

问题 描述 封锁协议
丢失修改 后提交覆盖前提交结果 一级封锁协议(X锁到事务结束)
脏读 读取未提交的无效数据 二级封锁协议(S锁立即释放)
不可重复读 同一事务两次读取结果不同 三级封锁协议(S锁到事务结束)
幻读 范围查询结果数量变化 间隙锁(锁定范围)

五、高频考点速记表

  1. 视图作用:简化查询、数据安全、逻辑独立性
  2. 索引类型
    • B+树:适合范围查询(如WHERE age>20)
    • Hash:适合等值查询(如WHERE id=1001)
  3. 存储过程 vs 触发器
    • 存储过程:预编译SQL集合,需显式调用
    • 触发器:事件驱动(如INSERT后自动更新统计)
  4. E-R图转换规则
    • 1:1联系:合并到任一实体表
    • 1:n联系:在多方表添加外键
    • m:n联系:新建关联表保存双方主键