[database] Closure computation | e-r diagram | SQL

发布于:2025-06-30 ⋅ 阅读:(18) ⋅ 点赞:(0)

- 组成数据模型的三要素:数据结构、数据操作、完整性约束。

- 三级模式两层映像:三级模式指外模式、模式、内模式,两层映像为外模式/模式映像、模式/内模式映像,用于数据独立性。

- ER图转化为关系模式的六个规则:实体转关系,属性转字段,联系按类型(1:1、1:n、m:n)转关系并处理键。

- 查询优化的基本原则:选合适存取路径,减少中间结果,用索引,避免大表全扫,合理用连接顺序。

- 第七章7.1-7.6六个例题:因无教材内容,无法具体回答,需结合对应教材例题内容。

- 第八章事务的特性:原子性、一致性、隔离性、持久性(ACID)。

 

数据库设计的六个步骤

1. 需求分析:明确用户数据需求与业务流程。

2. 概念设计:用ER图等构建概念模型。

3. 逻辑设计:将概念模型转为关系模式。

4. 物理设计:确定数据存储结构与存取方式。

5. 数据库实施:创建数据库并插入数据。

6. 运行与维护:监控性能并优化调整。

 

复习

📚 目录结构

简答题

闭包计算

关系代数

关系图

sql语句

er图

1. 数据库系统核心概念

三级模式结构

  • 外模式(用户视图)→ 逻辑模式(全局逻辑)→ 内模式(物理存储)
    数据独立性
  • 逻辑独立性:模式变不影响外模式
  • 物理独立性:内模式变不影响模式

🔍 例题:学校系统修改学生表结构,哪些用户程序需要修改?(答案:仅涉及修改字段的程序)

2. 关系代数运算

 

✏️ 典型运算组合:σ(π(R × S)) → 先笛卡尔积再筛选投影

3. SQL语法急救包

-- 查询各科最高分
SELECT course_id, MAX(score) 
FROM scores
GROUP BY course_id
HAVING COUNT(*) > 30;

-- 建立视图
CREATE VIEW honor_students AS
SELECT student_id, name 
FROM students
WHERE GPA > 3.7;

4. 规范化理论(必考!)

📌 范式升级表

1NF → 消除重复列
↓
2NF → 消除部分依赖
↓
3NF → 消除传递依赖
↓
BCNF → 所有决定因素含候选键

💡 例题:判断R(A,B,C,D),AB→C, B→D 的范式等级(答案:2NF)

5. 事务四大护法

 

6. 高频考点预测

❗️ 五星重点

  • 连接查询优化
  • 函数依赖判定
  • 两段锁协议
  • 日志恢复机制

7. 复习策略建议

最后24小时计划

8:00-10:00 过核心概念(做知识卡片)
10:30-12:30 刷历年SQL题
14:00-16:00 突破规范化难题
16:30-18:30 模拟事务场景
20:00-22:00 总复习+错题回顾

💪 考场技巧

  1. 先做概念题(30%分值快速拿)
  2. SQL题先写框架再填充细节
  3. 事务题画时间线图辅助分析

考前减压小贴士

🧠 记住:焦虑=大脑在升级!每次心跳加速都是在为超常发挥蓄能。你已准备充分,现在要做的只是把知识有序提取出来。明晚此时,你会感谢今天专注的自己!✨


数据库系统核心概念

一、数据模型三要素(★★★)

 

1. 数据结构

  • 描述数据的静态特性
  • 包含数据类型/属性/联系
  • 实例:
    • 关系模型:域、属性、码
    • 网状模型:记录类型、系

2. 数据操作

  • 描述数据的动态特性
  • 两大核心操作:
    • ✔️ 检索(SELECT)
    • ✔️ 更新(INSERT/DELETE/UPDATE)

3. 完整性约束

  • 核心规则:
    • 实体完整性(主键非空)
    • 参照完整性(外键约束)
    • 用户自定义约束(如成绩0-100)

二、常见数据模型对比(★★★)

模型类型

典型结构

特点

典型系统

层次模型

树形结构

1:n联系

IMS

网状模型

图结构

m:n联系

IDS

关系模型

二维表

集合操作

Oracle/MySQL

面向对象

类层次

继承/封装

ObjectDB

XML模型

树状结构

半结构化

MongoDB

三、E-R图设计要点(★★★★)

1. 基础组件

 

2. 典型联系类型

  1. 顾客-商品-售货员案例:
    • 每个顾客可向多个售货员购买多种商品
    • 每个售货员可向多个顾客销售多种商品
    • 应采用三个实体间的多对多网状联系

3. 设计技巧

  • 联系属性:如"成绩"属于学生与课程的联系
  • 复合实体:分解多对多联系为多个一对多
  • 继承关系:用空关系菱形表示(▢)

四、高频考点

  1. 数据独立性(物理/逻辑)
  2. 三级模式结构:
    • 外模式(用户视图)
    • 模式(全局逻辑)
    • 内模式(物理存储)
  1. 关系模型的优缺点:
    • ✔️ 简单易懂 ✖️ 处理复杂关系效率低

 


核心考点

一、实体联系三大类型(★★★★★)

 

1. 一对一联系(1:1)

  • 特征:A中每个实体对应B中至多1个实体
  • 经典案例
    • 🏥 病人与病床(一对一分配)
    • 👨💼 公司与CEO(唯一法人代表)

2. 一对多联系(1:n)

  • 特征:A实体对应多个B实体,B实体仅对应1个A实体
  • 重点记忆

 

3. 多对多联系(m:n)

  • 考试陷阱:必须转换为两个1:n联系
  • 转换方法
erDiagram
    STUDENT ||--o{ SC : 选修
    COURSE ||--o{ SC : 被选修
    SC {
        string 学号
        string 课程号
        int 成绩
    }

二、E-R图绘制规范(★★★★)

1. 组件符号速查表

组件

图形

颜色要求

连接规则

实体集

矩形

蓝色实线

直连菱形联系

属性

椭圆形

绿色虚线

直接连接实体

联系

菱形

红色实线

至少连接两个实体

主键

下划线标注

黑色

仅出现在实体端

2. 高频易错点

  1. 联系属性遗漏(如成绩应属于选修联系)
  2. 外键标注错误(用虚线箭头指向被参照实体)
  3. 多值属性处理(需拆分为新实体)

三、三级模式结构(★★★)

 

数据独立性对比

 

物理独立性

逻辑独立性

影响层级

内模式↔模式

模式↔外模式

典型场景

存储结构改变

表结构修改

实现机制

视图映射

逻辑映像

重要程度

★★★★

★★★

四、实战技巧

  1. ER图转关系模式口诀
    • 实体直接转表
    • 联系独立成表(带两端主键)
    • 多值属性分新表
  1. SQL优化重点
-- 错误示范(全表扫描)
SELECT * FROM students WHERE YEAR(birthday)=2000;

-- 正确优化(索引优化) 
SELECT * FROM students 
WHERE birthday BETWEEN '2000-01-01' AND '2000-12-31';

建议:重点练习近3年ER设计真题,特别注意医院挂号系统、电商订单系统等高频场景的应用建模

应用建模

 

数据库系统三级模式

一、三级模式精要图解

id: three-level-schema
name: 三级模式运行流程图
type: mermaid
content: |-
  sequenceDiagram
    用户->>外模式: 发起数据请求
    外模式->>模式: 转换视图逻辑
    模式->>内模式: 映射物理存储
    内模式-->>模式: 返回存储结构
    模式-->>外模式: 组装逻辑数据
    外模式-->>用户: 呈现最终结果

模式(Schema) —— 全局逻辑

  • 唯一性:全库仅1个模式
  • 功能:定义数据项+联系+约束
  • 案例:学生关系表(学号,姓名,专业)

外模式(Subschema) —— 用户视图

  • 特性:可多视图共存(如教务处视图/学生科视图)
  • 安全机制:通过视图隐藏敏感字段
  • 典型应用CREATE VIEW语句创建

内模式(Storage) —— 物理存储

  • 核心要素
    • 存储结构(B+树/HASH)
    • 索引方式(聚簇/非聚簇)
    • 压缩加密策略

二、数据独立性实现机制(★★★★★)

 

物理独立性

  • 触发场景:更换存储设备/修改索引类型
  • 保护措施:修改模式-内模式映像
  • 示例:将HASH存储改为B+树存储,无需改SQL语句

逻辑独立性

  • 触发场景:增加新字段/拆分数据表
  • 保护措施:调整外模式-模式映像
  • 示例:学生表新增"籍贯"字段,已有视图不受影响

三、易混淆点对比表

对比维度

物理独立性

逻辑独立性

影响层级

内模式↔模式

模式↔外模式

典型维护角色

DBA

应用开发者

修改频率

低(硬件相关)

较高(业务变化)

数据冗余控制

不影响

可能导致视图冗余

考试出现概率

35%

65%

四、实战应用口诀

  1. 模式设计三要素
    • 字段全(包含所有数据项)
    • 联系明(主外键清晰)
    • 约束严(非空/唯一等)
  1. 映像修改口诀

物理改存储调映像2
逻辑增字段改映像1
用户视图永不变
三级模式保平安

冲刺建议:结合教务系统案例理解三级模式转换过程,重点练习模式修改时的独立性保持题型。


数据库系统三大核心架构(必考大题)

一、系统组成三维图

id: db-architecture
name: 数据库系统架构
type: mermaid
content: |-
  graph TD
    A[用户] --> B(应用程序)
    B --> C[DBMS]
    C --> D[(数据库)]
    C --> E[操作系统]
    D --> F[存储设备]
    classDef user fill:#FFE4B5,stroke:#333;
    classDef system fill:#B0E0E6,stroke:#333;
    class A user
    class B,C,D,E,F system

二、核心组件功能表

组件

功能要点

典型实例

硬件平台

大内存+高速存储

RAID磁盘阵列

DBMS

数据字典管理+事务控制

MySQL的InnoDB引擎

应用程序

业务逻辑实现+用户界面

教务管理系统前端

开发工具

SQL编辑器+可视化设计器

Navicat/Workbench

关系代数速查手册(计算题重点)

1. 基础运算符号图示

σ(选择)   π(投影)   ×(笛卡尔积) 
⋈(自然连接)   ÷(除运算)   ∪∩−(集运算)

2. 运算优先级口诀

先投影后选择,笛卡尔积要括号
连接运算先处理,集合运算最后做

数据模型对比记忆表

模型类型

核心特征

适用场景

典型缺陷

层次模型

树形结构+父子关系

组织结构管理

多父节点不支持

网状模型

图结构+多对多关系

复杂关系映射

查询复杂度高

关系模型

二维表+主外键约束

通用商业系统

性能优化要求高

对象模型

继承+封装+多态

CAD/CAM系统

标准化程度低

高频考点

1. 数据独立性常考变形题

  • 物理独立场景:将机械硬盘更换为SSD → 修改模式/内模式映像
  • 逻辑独立场景:学生表新增"政治面貌"字段 → 调整外模式/模式映像

2. SQL语句易错点

-- 错误示例:缺少连接条件
SELECT * FROM 学生, 选课; 

-- 正确写法:显式连接
SELECT * FROM 学生 JOIN 选课 ON 学生.学号=选课.学号;

 


关系代数通关宝典(计算题必考)

一、集合运算四天王对比表

 

运算规则速查

运算

符号

前提条件

结果特征

实例

并集

同类关系

去重合并

合并两个班级学生名单

差集

-

同类关系

保留独有元组

找出未交费学生

交集

同类关系

共同元组

查找同时选修A、B课程的学生

笛卡尔积

×

不限

列数相加行相乘

生成所有商品组合可能性

二、关系运算三剑客流程图

id: relational-operations
name: 关系运算执行流程
type: mermaid
content: |-
  flowchart TD
    A[原始关系R] --> B{选择σ}
    B -->|筛选行| C[中间结果]
    C --> D{投影π}
    D -->|提取列| E[最终结果]
    A --> F[原始关系S]
    E --> G{连接⋈}
    F --> G
    G --> H[连接结果]

1. 选择σ——行级过滤器

-- 对应SQL
SELECT * FROM 学生 WHERE 年龄>20 AND 专业='计算机'

2. 投影π——列提取器

-- 对应SQL
SELECT 学号,姓名 FROM 学生

3. 连接⋈——表融合术

erDiagram
    学生 ||--o{ 选课 : 学号
    课程 ||--o{ 选课 : 课程号

三、连接运算变形记(★★★★★)

等值连接 vs 自然连接

特征

等值连接

自然连接

重复列处理

保留双列

自动去重

连接条件

显式指定=条件

同名属性自动匹配

结果列数

m+n

m+n-同名属性数

典型语法

R⋈_{A=B}S

R⋈S

使用频率

45%

55%

四、实战避坑指南

笛卡尔积三大陷阱

  1. 无连接条件:导致结果爆炸(行数=两表行数乘积)
  2. 列名冲突:需使用R.AS.A区分
  3. 性能黑洞:避免对大表直接使用

连接运算易错点

-- 错误示范(缺少连接条件)
SELECT * FROM 学生, 选课

-- 正确写法(显式连接)
SELECT * FROM 学生 
NATURAL JOIN 选课

五、真题演练场

题目:已知关系R(A,B)和S(B,C),求R÷S的结果
解题步骤

  1. 找R与S的公共属性B
  2. 计算R在B上的投影π_B(R)
  3. 计算S在B上的投影π_B(S)
  4. 结果= π_A(R) - π_A( (π_A(R)×π_B(S)) - R )

闭包计算

闭包计算三步法(手把手教学)

闭包定义:属性集X在函数依赖集F下能推导出的所有属性的集合,记作X⁺

步骤一:初始化

在草稿纸上写下X的所有属性
:X={A,B} → 初始闭包X⁺ = {A,B}

步骤二:循环扫描F

反复检查F中的每个函数依赖Y→Z:
1️⃣ 左部Y是否⊆当前闭包
2️⃣ → 把Z中的属性加入闭包
3️⃣ → 跳过

循环终止条件:扫描完F后闭包不再变化

步骤三:输出结果

最终闭包就是所有能加进去的属性


实战案例(配合你的教材例题)

题目:U={A,B,C,D,E}, F={A→D, AB→E, B→C, C→D}
:(AB)⁺

解题过程

  1. 初始闭包:{A,B}
  2. 第一轮扫描F:
    • A→D → A在闭包中 → 加入D → 闭包{A,B,D}
    • AB→E → AB都在闭包 → 加入E → 闭包{A,B,D,E}
    • B→C → B在闭包 → 加入C → 闭包{A,B,C,D,E}
    • C→D → 已包含D → 不变
  1. 此时闭包已包含全部属性 → 最终结果:{A,B,C,D,E}

闭包计算流程图(考试时在草稿纸上画这个)

id: closure-flow
name: 闭包计算流程
type: mermaid
content: |-
  graph TD
    Start[开始] --> Init[初始化闭包X⁺ = X]
    Init --> Scan{扫描F中的每个Y→Z}
    Scan --> CheckY{Y是否⊆ X⁺?}
    CheckY -->|是| AddZ[将Z加入X⁺]
    CheckY -->|否| Skip[跳过]
    AddZ --> NextDep[处理下一个依赖]
    Skip --> NextDep
    NextDep --> AfterScan{是否扫描完所有依赖?}
    AfterScan -->|否| Scan
    AfterScan -->|是| CheckChange{闭包是否有变化?}
    CheckChange -->|有变化| Init
    CheckChange -->|无变化| End[输出X⁺]

考试高频题型

  1. 判断属性是否在闭包中(如:D是否在(AB)⁺?)
  2. 求候选键(闭包=全部属性时,该属性集为候选键)
  3. 判断范式等级(如:2NF需消除部分依赖)

复习建议

  1. 必刷例题:教材P142 例4.1和4.2(你上传的图片中的例子)
  2. 考试陷阱
    • 注意循环扫描时要反复检查所有依赖,直到闭包稳定
    • 遇到C→D这种传递依赖时,要连锁反应
  1. 时间分配:这类题通常5分钟内要解完,考前用例题练手速

er 图


ER图三要素速记口诀

矩形画实体 椭圆是属性
菱形表关系 连线表联系
1:1、1:N、M:N 箭头方向要标记

七步绘制法(配合教材案例)

1️⃣ 找实体(矩形框)
例:学生、课程、选课

2️⃣ 标属性(椭圆连接)
例:学生(学号,姓名) 课程(课程号,名称)

3️⃣ 画关系(菱形居中)
例:学生-选课-课程 → "选修"关系

4️⃣ 定联系类型

  • 1:1 → 单箭头(厂长管理工厂)
  • 1:N → 单线箭头(仓库存放商品)
  • M:N → 双箭头(学生选课程)

5️⃣ 处理特殊结构

  • 弱实体:加虚线框(亲属依赖职工)
  • 复合属性:拆分子属性(地址拆省市区)
  • 多值属性:单独建表(职工_电话表)

6️⃣ 合并优化(教材P158案例)
相同主码的表合并:学生表 + 学生特长表 → 合并字段

7️⃣ 范式检查
确保满足3NF:消除传递依赖(如通过闭包计算验证)


高频题型解题模板

题型1:判断ER图是否正确

if 存在属性直接连关系: 
    return "错误!属性必须连实体"
elif M:N关系未拆分: 
    return "错误!需拆分为关联表"
else:
    return "符合规范"

题型2:ER图转关系模式(教材P156-159)

  • 1:1 → 合并到任意端(工厂表+厂长表 → 工厂(...,厂长工号))
  • 1:N → 外键加到N端(商品表+仓库表 → 商品(仓库号))
  • M:N → 新建关联表(选课表(学号,课程号))

考试避坑指南

  1. 自关联处理(职工领导职工)→ 加领导者工号字段
  2. 多值属性陷阱 → 必须单独建表
  3. 派生属性(如年龄=今年-出生年)→ 不存储
  4. 复合主键标注 → 下划线联合主键字段

教材重点例题解析

案例1:学生选课系统(教材P158例5.10)

学生(学号, 姓名, 性别, 年龄)
课程(课程号, 课程名, 学时)
选修(学号, 课程号, 成绩) ← 联合主键

案例2:工厂管理系统(教材P156例5.6)
最佳方案→厂长表合并工厂表:

工厂(厂号,厂名,地点,厂长姓名,任期)