原文筆記

本課程筆記資料庫系統 · 30 篇
数据库补充习题 70+100 复习索引cs/db/100+70/00-复习索引Day 01 - 数据库100题:单项选择 1-20cs/db/100+70/Day01-数据库100题-选择01-20Day 02 - 数据库100题:单项选择 21-40cs/db/100+70/Day02-数据库100题-选择21-40Day 03 - 数据库100题:单选 41-50,填空 51-60cs/db/100+70/Day03-数据库100题-选择41-50填空51-60Day 04 - 数据库100题:填空 61-80cs/db/100+70/Day04-数据库100题-填空61-80Day 05 - 数据库100题:填空 81-100cs/db/100+70/Day05-数据库100题-填空81-100Day 06 - 数据库70题:试题 1-11cs/db/100+70/Day06-数据库70题-试题01-11Day 07 - 数据库70题:试题 12-25cs/db/100+70/Day07-数据库70题-试题12-25Day 08 - 数据库70题:综合题 1-8cs/db/100+70/Day08-数据库70题-综合01-08Day 09 - 数据库70题:综合题 22-33cs/db/100+70/Day09-数据库70题-综合22-33Day 10 - 数据库70题:综合题 37-47cs/db/100+70/Day10-数据库70题-综合37-47Day 11 - 数据库70题:综合题 48-61cs/db/100+70/Day11-数据库70题-综合48-61Day 12 - 数据库70题:综合题 62-71cs/db/100+70/Day12-数据库70题-综合62-71基础概念与题型全文cs/db/notes/01-基础概念与题型全文SQL语句与数据库操作全文cs/db/notes/02-SQL语句与数据库操作全文数据库编程全文cs/db/notes/03-数据库编程全文数据库设计与规范化全文cs/db/notes/04-数据库设计与规范化全文查询优化、恢复、并发控制全文cs/db/notes/05-查询优化恢复并发控制全文数据库规范化流程cs/db/notes/normalization2025-2026-2 计科数据库系统期末cs/db/pastpapers/25-26cs2024-2025-2 计科数据库系统期末cs/db/pastpapers/db-pastpaper-1数据库系统完整讲义总览与考试题型地图cs/db/tutorial/00-总览与考试题型地图01 数据库基础与关系模型cs/db/tutorial/01-数据库基础与关系模型02 SQL 与关系代数cs/db/tutorial/02-SQL与关系代数03 数据库编程专项:存储过程、触发器、游标、嵌入式 SQLcs/db/tutorial/03-数据库编程专项04 数据库设计、E-R 图与规范化cs/db/tutorial/04-数据库设计ER与规范化05 查询优化专项:关系代数、查询树、优化树cs/db/tutorial/05-查询优化专项06 事务、并发控制与数据库恢复cs/db/tutorial/06-事务并发控制与恢复07 填空选择速记清单cs/db/tutorial/07-填空选择速记清单08 大题答题模板cs/db/tutorial/08-大题答题模板

01 数据库基础与关系模型

这一章主要对应选择题、填空题、简答题,也会支撑后面的设计题和恢复并发题。

一、数据库系统基本概念

DB、DBMS、DBS

  • DB:Database,数据库,是长期存储在计算机内、有组织、可共享的数据集合。
  • DBMS:Database Management System,数据库管理系统,是位于用户和操作系统之间的数据管理软件。
  • DBS:Database System,数据库系统,通常包括数据库、DBMS、应用程序、数据库管理员 DBA、用户等。

关系:DBS 包括 DB 和 DBMS。考试经常问“三者关系”和“数据库系统核心”,答案分别是 DBS 包括 DB 和 DBMS、DBMS。

数据库系统的特点

数据库系统相对文件系统的主要优点:

  • 数据结构化:这是数据库系统与文件系统的本质区别。
  • 数据共享性高,冗余度低,易扩充。
  • 数据独立性高:应用程序尽量不受数据逻辑结构和物理存储变化影响。
  • 数据由 DBMS 统一管理和控制:包括安全性、完整性、并发控制、恢复。

常见陷阱:“数据冗余度大”不是数据库系统特点,而是文件系统常见问题。

二、数据模型

数据模型通常由三部分组成:

  1. 数据结构:描述数据对象及对象之间的联系,是静态特征。
  2. 数据操作:描述允许对数据做什么,如查询、插入、删除、修改,是动态特征。
  3. 完整性约束:描述数据必须满足的语义规则。

常见数据模型:

  • 层次模型:树结构,一个子结点至多一个父结点。
  • 网状模型:图结构,CODASYL/DBTG 是代表。
  • 关系模型:用二维表/关系表示数据和联系。
  • E-R 模型:概念模型,用实体、属性、联系描述现实世界。

概念模型独立于具体机器和 DBMS;E-R 图用于概念结构设计,不是逻辑设计或物理设计。

三、三级模式与两级映像

数据库系统常用三级模式结构:

  • 外模式:用户或应用程序看到的局部逻辑结构,也叫子模式、用户模式。
  • 模式:数据库的全局逻辑结构,也叫概念模式。
  • 内模式:数据在物理存储层面的描述,也叫存储模式。

两级映像:

  • 外模式/模式映像:保证逻辑独立性。
  • 模式/内模式映像:保证物理独立性。

物理独立性:数据的物理存储位置、存储结构、存取路径改变时,应用程序不需要修改。

逻辑独立性:数据库的全局逻辑结构改变时,外模式和应用程序尽量不需要修改。

考试问“要保证数据独立性,需要修改什么”,答:三级模式之间的两种映像。

四、关系模型基本术语

关系模型的基本数据结构是关系。关系可以理解为二维表,但要满足关系模型规则。

常用术语:

  • 域:一组具有相同数据类型的值的集合。
  • 笛卡尔积:多个域所有可能组合的集合。若 |D1|=2, |D2|=2, |D3|=2,则基数为 2*2*2=8。
  • 关系:域的笛卡尔积的子集。
  • 元组:关系中的一行。
  • 属性:关系中的一列;现实世界的“特征”对应数据世界的属性。
  • 码/键:能唯一标识元组的属性组。
  • 超码:能唯一标识元组的属性组,可包含多余属性。
  • 候选码:最小超码,不含多余属性。
  • 主码:从候选码中选定的一个。
  • 主属性:包含在任一候选码中的属性。
  • 非主属性:不包含在任何候选码中的属性。
  • 外码:一个关系中的属性或属性组,引用另一个关系的主码。

关系的性质:

  • 列是同质的,每列来自同一域。
  • 不同列可以来自同一域,但属性名必须不同。
  • 列的顺序可交换。
  • 行的顺序可交换。
  • 任意两个元组不能完全相同。
  • 每个分量必须是不可再分的数据项,这是 1NF 的要求。

五、关系完整性

关系模型有三类完整性:

  1. 实体完整性:主码属性不能为空,且主码值唯一。
  2. 参照完整性:外码值要么为空,要么等于被参照关系中某个主码值。
  3. 用户自定义完整性:由具体业务定义,如年龄范围、性别取值、工资下限。

例子:

Sno char(9) PRIMARY KEY
FOREIGN KEY (Sno) REFERENCES Student(Sno)
CHECK (Age BETWEEN 18 AND 55)
CHECK (Sex IN ('男', '女'))

安全性与完整性区别:

  • 安全性:防止非法用户非法访问,关键词是授权、口令、角色、视图保护、审计。
  • 完整性:防止合法用户输入或产生不符合语义的数据,关键词是主键、外键、CHECK、触发器。

“年龄限制 16-25 岁”是完整性,不是安全性。“授权”和“撤权”是安全性。

六、关系代数基础

五种基本运算常见说法:并、差、笛卡尔积、选择、投影。交、连接、自然连接、除法可由基本运算导出。

选择 σ:按条件选行。

σ_{Age > 20}(Student)

投影 π:选列,并消去重复元组。

π_{Sno, Sname}(Student)

连接 ⋈:按条件把两个关系相关元组拼接。

Student ⋈_{Student.Sno = SC.Sno} SC

自然连接:在公共属性上做等值连接,并去掉重复公共属性列。

除法:表达“全部”“至少包含全部”这类查询,例如“选修了所有课程的学生”。SQL 中通常用双重 NOT EXISTS。

七、NULL 与视图

NULL 表示未知、不存在或不适用,不等于 0、空格或空字符串。判断 NULL 必须写:

WHERE Sage IS NULL
WHERE Sage IS NOT NULL

不能写:

WHERE Sage = NULL
WHERE Sage != NULL

视图是从一个或多个基本表导出的虚表。数据库中只保存视图定义,不保存视图对应的数据。

视图优点:

  • 简化用户查询。
  • 使用户以不同角度看同一数据。
  • 提供一定逻辑独立性。
  • 可以作为安全保护手段,只授权访问过滤后的视图。

视图可查询,也可在视图上再定义视图;但不能在视图上定义新的基本表。并非所有视图都可更新,含聚合、分组、去重、多表复杂连接的视图通常不可更新。

八、索引

索引能提高查询效率,因为它为查找条件建立了有序或散列式的辅助访问路径,避免全表扫描。

但索引不是越多越好。插入、删除、更新时索引也要维护,会增加开销。

聚簇索引决定数据物理排列,一个基本表通常只能有一个聚簇索引。非聚簇索引可以有多个。

关系代数优化中应尽早做选择和投影;不是尽早做连接,更不是尽早做笛卡尔积。