第一章 绪论
数据库系统概述
数据库(DB):长期存储在计算机内、有组织的、可共享的大量数据的集合。
数据库管理系统(DBMS):位于用户与操作系统之间的一层数据管理软件,主要功能包括数据定义、数据操纵、数据库的运行管理、数据库的建立和维护等。
数据库系统(DBS):由数据库、数据库管理系统(及其开发工具)、应用系统、数据库管理员(DBA)构成。
数据模型
概念模型:主要用于数据库设计,如 E - R 模型,用实体、属性、联系来描述现实世界。
逻辑模型和物理模型:逻辑模型包括层次模型、网状模型、关系模型等。关系模型是目前应用最广泛的,它用二维表结构来表示实体及实体间的联系。物理模型描述数据在存储介质上的组织结构。
第二章 关系数据库
关系数据结构
关系:一个关系对应一张二维表,表中的一行称为一个元组,一列称为一个属性。
候选码:能唯一标识一个元组的属性或属性组。主码是从候选码中选定的一个。
关系模式:关系的描述,一般表示为关系名 (属性 1, 属性 2, …, 属性 n)。
关系操作
关系操作包括查询(选择、投影、连接、除、并、交、差等)和更新(插入、删除、修改)操作。关系操作的特点是集合操作方式,即操作的对象和结果都是集合。
关系的完整性
实体完整性:主码的取值不能为空且唯一。
参照完整性:外码要么取空值,要么取被参照关系中主码的值。
用户定义的完整性:用户针对具体的应用环境定义的完整性约束条件。
第三章 SQL 语言
SQL 概述
SQL 是结构化查询语言,是关系数据库的标准语言,具有数据定义、数据操纵、数据控制等功能。
数据定义
创建表:
CREATE TABLE <表名>( <列名> <数据类型> \[列级完整性约束条件]  \[, <列名> <数据类型> \[列级完整性约束条件]]  …  \[, <表级完整性约束条件>] );
修改表:
ALTER TABLE <表名>\[ADD \[COLUMN] <新列名> <数据类型> \[完整性约束]]\[DROP \[COLUMN] <列名> \[CASCADE | RESTRICT]]\[ALTER COLUMN <列名> <数据类型>];
删除表:
DROP TABLE <表名> \[RESTRICT | CASCADE];
数据查询
单表查询:
SELECT \[ALL | DISTINCT] <目标列表达式>\[, <目标列表达式>]…FROM <表名>\[WHERE <条件表达式>]\[GROUP BY <列名1> \[HAVING <条件表达式>]]\[ORDER BY <列名2> \[ASC | DESC]];
连接查询:包括等值连接、自然连接、非等值连接、外连接(左外连接、右外连接、全外连接)等。
嵌套查询:将一个查询块嵌套在另一个查询块的 WHERE 子句或 HAVING 短语的条件中的查询。
数据更新
插入数据:
INSERT INTO <表名> \[(<属性列1>\[, <属性列2>…])]VALUES (<常量1>\[, <常量2>…]);
修改数据:
UPDATE <表名>SET <列名>=<表达式>\[, <列名>=<表达式>]…\[WHERE <条件表达式>];
删除数据:
DELETE FROM <表名>\[WHERE <条件表达式>];
第四章 数据库安全性
数据库安全性概述
数据库安全性是指保护数据库以防止不合法使用所造成的数据泄露、更改或破坏。
数据库安全性控制
用户身份鉴别:常用方法有口令、生物特征识别等。
存取控制:包括自主存取控制(DAC)和强制存取控制(MAC)。DAC 通过 GRANT 和 REVOKE 语句来实现对不同用户授予或收回不同的权限。
GRANT <权限>\[, <权限>]…ON <对象类型> <对象名>TO <用户>\[, <用户>]…\[WITH GRANT OPTION];REVOKE <权限>\[, <权限>]…ON <对象类型> <对象名>FROM <用户>\[, <用户>]… \[CASCADE | RESTRICT];
视图机制、审计、数据加密等也是保障数据库安全的重要手段。
第五章 数据库完整性
实体完整性
在 CREATE TABLE 语句中,通过 PRIMARY KEY 定义主码来实现实体完整性。
参照完整性
在 CREATE TABLE 语句中,通过 FOREIGN KEY 定义外码,并使用 REFERENCES 指定被参照表及主码来实现参照完整性。
用户定义的完整性
包括列值非空(NOT NULL)、列值唯一(UNIQUE)、检查列值是否满足一个布尔表达式(CHECK)等约束条件,在 CREATE TABLE 语句中定义。
第六章 关系数据理论
函数依赖
设 R (U) 是一个属性集 U 上的关系模式,X 和 Y 是 U 的子集。若对于 R (U) 的任意一个可能的关系 r,r 中不可能存在两个元组在 X 上的属性值相等, 而在 Y 上的属性值不等,则称 “X 函数确定 Y” 或 “Y 函数依赖于 X”,记作 X→Y。
范式
1NF:每一个分量必须是不可分的数据项。
2NF:若关系模式 R∈1NF,并且每一个非主属性都完全函数依赖于 R 的码,则 R∈2NF。
3NF:若关系模式 R∈2NF,并且每一个非主属性都不传递函数依赖于 R 的码,则 R∈3NF。
BCNF:关系模式 R<U,F>∈1NF,若 X→Y 且 Y⊈X 时 X 必含有码,则 R<U,F>∈BCNF。
模式分解
模式分解的目标是消除数据冗余和操作异常,分解要具有无损连接性和保持函数依赖。
第七章 数据库设计
数据库设计概述
数据库设计的任务是根据一个单位的信息需求、处理需求和数据库的支撑环境(包括硬件、操作系统与 DBMS),设计出数据模式和应用程序。
数据库设计步骤
需求分析:通过调查收集用户对数据库的信息需求、处理需求等。
概念结构设计:采用 E - R 模型,设计出反映用户需求的概念模型。
逻辑结构设计:将概念模型转换为关系模型,并进行优化。
物理结构设计:为关系数据模型选择合适的存储结构和存取方法。
数据库实施:建立数据库,编写和调试应用程序,组织数据入库等。
数据库运行和维护:对数据库进行评价、调整、修改等维护工作。
第八章 数据库编程
嵌入式 SQL
将 SQL 语句嵌入到高级语言(如 C、Java 等)程序中,利用高级语言的过程性结构来弥补 SQL 语言在实现复杂应用方面的不足。需要解决 SQL 语句与主语言之间的通信等问题。
动态 SQL
允许在程序运行过程中根据实际需要动态生成 SQL 语句,提高程序的灵活性。
第九章 关系查询处理和查询优化
关系查询处理步骤
查询分析:对查询语句进行语法分析、语义检查等。
查询检查:检查用户权限等。
查询优化:选择一个高效执行的查询处理策略,包括代数优化(基于关系代数等价变换规则)和物理优化(选择合适的存取路径和操作算法)。
查询执行:根据优化后的策略执行查询。
查询优化的重要性
可以极大地提高查询效率,减少系统开销,尤其是在大数据量和复杂查询情况下。
第十章 数据库恢复技术
事务
事务是用户定义的一个数据库操作序列,这些操作要么全做,要么全不做,是一个不可分割的工作单位。事务具有原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)和持久性(Durability),即 ACID 特性。
故障类型
事务内部故障:如运算溢出、违反完整性约束等。
系统故障:如操作系统故障、DBMS 代码错误等。
介质故障:如磁盘损坏等。
恢复技术
日志文件:用于记录事务对数据库的更新操作,是恢复的重要依据。
恢复策略:针对不同故障类型,采用不同的恢复策略,如事务故障恢复采用撤销事务操作,系统故障恢复采用撤销未完成事务和重做已提交事务,介质故障恢复需要重装数据库副本并重做已提交事务等。