《数据库系统概论》知识总结归纳
数据库的四个基本概念
- 数据(Data)
- 数据库(DataBase)
- 数据库管理系统(DataBase Management System)
- 数据库系统(DataBase System)
DBMS主要功能
- 数据定义功能
- 数据操纵功能
- 数据的组织、存储和管理
- 数据库的事务管理和运行管理
- 数据库的建立和维护功能
数据库系统的特点
- 数据结构化
- 数据共享性高、冗余度低、可拓展性高
- 数据独立性高
数据控制功能
- 数据的安全性保护
- 数据的完整性检查
- 并发控制
- 数据库恢复
两类数据模型
- 概念模型
- 逻辑模型和物理模型
数据模型的组成要素
1. 数据结构
数据库的组成对象以及对象之间的联系
2. 数据操纵
对数据库中各种对象的实例允许执行的操作的集合,包括操作及有关操作规则
3. 数据的完整性约束条件
一组完整性规则
数据库系统的三层模式结构
- 外模式
- 模式
- 内模式
数据库的二级映像
- 外模式/模式映像
- 模式/内模式映像
外模式/模式映像
当模式发生改变时,由DBA对外模式/模式映像作出相应的修改,保持外模式不变。因为应用程序是根据外模式编写的,从而保证应用程序不必修改。进而保证了数据与程序的逻辑独立性,简称数据的逻辑独立性。
模式/内模式映像
当存储结构发生改变时,由DBA对模式/内模式映像作出相应的修改,保持模式不变,从而保证了应用程序不必修改。进而保证了数据与程序的物理独立性,简称数据的物理独立性。
实体完整性和参照完整性是关系数据库的两个不变性
DBA的职责
- 决定数据库的信息内容和结构
- 决定数据库的存储结构和存取策略
- 定义数据库的安全性约束和完整性检查条件
- 监控数据库的使用与运行
- 对数据库进行改进、重组、重构
关系数据库
关系的性质
- 列的顺序无所谓
- 行的顺序无所谓
- 分量必须取原子值,即每个分量必须是不可分割的数据项
- 任意两个元组的候选码不能取相同的值
基本的关系操作
- 选择
- 投影
- 并
- 差
- 笛卡尔积
专门的关系运算
选择
选择运算从行的角度
投影
投影运算从列的角度
连接
一般的连接运算从行的角度
自然连接从行和列的角度(因为还要删除重复列)
除操作
除运算从行和列的角度
关系的完整性
1. 实体完整性
主码(primary key)不为空
2. 参照完整性
外码(foreign key)要么为空,要么是被参照表的主码值
3. 用户自定义完整性
SQL的特点
1. 综合统一
集数据定义语言(DDL)、数据操纵语言(DML)、数据控制语言(DCL)于一体
2. 高度非过程化
用户只要提出做什么,而无需了解存取路径
3. 面向集合的操作方式
操作对象和操作结果都是集合
4. 以同一种语法结构提供多种使用方式
既是独立性语言,又是嵌入式语言
5. 语言简洁,易学易用
完成核心功能只用了九个动词
WHILE子句与HAVING短语的区别
WHILE子句作用的对象是基本表和视图,而HAVING短语作用的对象是组
视图的概念以及与基本表的区别
视图是一个或多个基本表或视图组成的表。与基本表不同,视图是虚表。数据库中只存放视图的定义,而不存放视图的数据,这些数据仍存放在原来的基本表中。
查询和更新视图的方法
视图消解: 从数据字典中找出视图的定义,把视图中的子查询与用户的查询结合起来,转化为等价的对的基本表的查询,然后再执行修正了的查询。
数据库安全性
数据库安全性级别划分指标
- 安全策略
- 责任
- 保证
- 文档
常用的存取控制方法
- 自主存取控制(DAC)
- 强制存取控制(MAC)
2NF
消除非主属性对候选码的部分依赖
3NF
消除非主属性对候选码的部分依赖和传递依赖
BCNF
每一个决定因子都包含码
数据库设计
数据库系统设计的基本步骤
-
需求分析(DD数据字典)
- 需求分析方法
结构化设计(Structed Analysis, SA) - 数据字典的概念
数据字典是指数据库中对数据的描述,即元数据,而不是数据本身。是在需求分析阶段建立的,在数据库设计中不断修改、充实、完善的。它在数据库设计中占有很重要的地位。 - 数据字典的组成
数据项、数据结构、数据流、数据存储、处理过程
- 需求分析方法
-
概念结构设计(ER图)
- 概念模型主要特点
- E-R图的集成
- 最经常采取的策略:自顶向下地进行需求分析,自底向上地设计概念结构
- 子系统的E-R图之间的三类冲突
- 属性冲突
- 命名冲突
- 结构冲突
- 消除冗余的的方法
- 分析法: 以数据字典和数据流图为依据,根据数据字典中关于数据项之间的逻辑关系的说明来消除冗余
- 规范化理论
-
逻辑结构设计(ER图转化为关系模型)
- E-R图向关系模型的转化规则
- 一对一不要转化为表
- 一对多可以转化为表
- 多对多必须转化为表
- 多对多对多必须转化为表
- E-R图向关系模型的转化规则
-
物理结构设计(存储结构和存取方法)
- 步骤
- 确定数据库的物理结构,在关系数据库中主要是存储结构和存取策略
- 对物理结构进行评价,评价的重点是时间和空间效率
- 如果评价结果满足原设计要求,则可进入到物理实施阶段,否则,就要重新设计或修改物理结构
- 确定数据的存放位置和存储结构要综合考虑的因素
- 存取时间
- 存储空间利用率
- 维护代价
- 步骤
- 数据库的实施
-
数据库的运行和维护
- 数据库的转储和恢复
- 数据库的安全性和完整性控制
- 数据库的性能监督、分析和改造
- 数据库的重组织、重构造
关系查询处理和查询优化
RDBMS查询处理步骤
- 查询分析
- 查询检查
- 查询优化
- 查询执行
集中式数据库和分布式数据库的查询执行开销
- 磁盘存取块数(I/O代价)
- 处理机时间(CPU代价)
- 查询的内存开销(内存代价)
- 通信代价
[分布式]
数据库恢复技术
事务的基本概念
- 数据库的操作序列
- 不可分割的工作单位
- 恢复和并发控制的基本单位
事务的ACID特性
原子性(Atomicity)
事务中的诸操作要么都做,要么都不做
一致性(Consistency)
事务必须从一个一致性状态变到另一个一致性状态
独立性(Isolation)
一个事务的执行不能被其他事务干扰
持久性(Durability)
事务一旦提交,对数据库中数据的改变就应该是永久性的
先写日志文件原则
把对数据的修改写到数据库中和把表示这个修改的日志记录写到日志文件中是两个不同的操作。有可能在这两个操作之间发生故障,即这两个写操作只完成了一个。如果先写了数据库修改,而在运行记录中没有登记这个修改,则以后就无法恢复修改了。如果先写日志文件,但没有修改数据库,按日志文件恢复时只不过多执行了一次不必要的UNDO操作,并不会影响数据库的正确性
语句
空值用"IS NULL" 或 "IS NOT NULL" 判断
定义基本表
CREATE TABLE <表名> (<列名> <数据类型> [列级完整性约束条件]
[,<列名> <数据类型> [列级完整性约束条件])]
...
[,<表级完整性约束条件>]
eg:
CRETE TABLE SC
(
Sno CHAR(9),
Cno CHAR(4),
Grade SMALLINT,
PRIMARY KEY(Sno, Cno),
FOREIGN KEY(Sno) REFERENCES Student(Sno),
FOREIGN KEY(Cno) REFERENCES Course(Cno)
);
修改基本表
ALTER TABLE <表名>
[ADD [COLUMN] <新列名> <数据类型> [完整性约束条件] ]
[ADD <表级完整性约束>]
[DROP [COLUMN] <列名> [CASCADE|RESTRICT] ]
[DROP CONSTRAINT <完整性约束名> [RESTRICT|CASCADE] ]
[ALTER COLUMN <列名> <数据类型>]
eg:
添加入学时间列:
ALTER TABLE Student ADD S_entrance DATE;
将年龄字符串改为int类型
ALTER TABLE Student COLUMN Sage INT;
增加课程名称必须取唯一值的约束条件
ALTER TABLE Course ADD UNIQUE(Cname);
删除基本表
DROP TABLE <表名> [RESTRICT|CASCADE];
建立索引
CREATE [UNIQUE] [CLUSTER] INDEX <索引名>
ON <表名>(<列名>[<次序>] [, <列名> [<次序>]]...)
CLUSTER --> 聚簇索引
数据查询
SELECT [ALL|DISTINCT] <目标列表达式> [,<目标列表达式>] ...
FROM <表名或视图名> [,<表名或视图名>...] | (<SELECT 语句>) [AS] <别名>
[WHERE <条件表达式>]
[GROUP BY <列名1> [HAVING <条件表达式>]]
[ORDER BY <列名2> [ASC|DESC]];
数据插入
一般格式:
INSERT INTO <表名>[(<属性列1> [,<属性列2] ...)]
VALUES(<常量1>[, <常量2>] ...)
插入子查询结果:
INSERT INTO <表名>[(<属性列1> [,<属性列2] ...)]
子查询;
数据删除
DELETE FROM <表名>
WHERE <条件表达式>;
数据更新
UPDATE <表名>
SET <列名> = <表达式> [,<列名> = <表达式>] ...
WHERE <条件表达式>;
字符匹配
一般格式:
[NOT] LIKE '<匹配串>' [ESCAPE '<换码字符>']
通配符:
% --> 匹配0个或n个任意字符
_ --> 匹配一个任意字符
显示当前搜索路径
SHOW search_path;
完整性约束命名子句
创建
CONSTRAINT <完整性约束条件名> <完整性约束条件>
删除
DROP CONSTRAINT <完整性约束条件名>
授权GRANT
一般格式为:
GRANT <权限> [,<权限>]...
ON <对象类型> <对象名> [,<对象类型> <对象名>]...
TO <用户> [, <用户>]...
[WITH GRANT OPTION];
eg:
grant all privileges
on table Student
to User1
with grant option;
创建用户
CREATE USER <username> [WITH] [DBA|RESOURCE|CONNECT]
创建角色
CREATE ROLE <rolename>
收回权限REVOKE
REVOKE <权限>[,<权限>]...
ON <对象类型> <对象名>[,<对象类型> <对象名>]...
FROM <用户>[,<用户>]...[CASCADE|RESTRICT]
eg:
REVOKE UPDATE(Sno)
ON TABLE Student
FROM User1;