导图社区 数据库系统概论
数据库系统概论知识总结,包括数据库模型、发展过程,关系数据库、SQL语言、并发控制、数据库恢复技术、数据库设计等内容。
编辑于2021-12-21 11:03:49数据库系统概论
绪论
数据库组成
DBS=DB+DBMS+DBA+应用程序
数据库发展过程
人工管理阶段
数据不保存
应用程序管理数据
数据不共享
数据不具有独立性
文件系统阶段
数据可长期保存
由文件系统管理数据
数据共享性差,冗余度高
数据独立性差
数据库系统阶段
数据结构化
数据库系统和文件系统最本质区别
数据共享性高、冗余度低且易扩充
数据独立性高
物理独立性
模式/内模式映像
从高到低
逻辑独立性
外模式/模式映像
视图保证
由数据库管理系统统一管理和控制
数据模型
数据库的核心和基础
现实世界数据特征的抽象
分类
第一类
概念模型
E-R图
现实到信息的第一层抽象
概念模式
第二类
逻辑模型
模式、逻辑模式、外模式、表、关系模式
E-R图向表的转换
物理模型
组成要素
数据结构
用数据结构的类型命名数据模型
数据操作
数据的完整性约束条件
看书上的例子
实体完整性 P158
主码唯一且不为空
PRIMARY KEY(列级)/PRIMARY KEY(...)(表级)
多个主码用表级
方法:全表扫描/索引(B+树)
参照完整性 P160
外码取空或为另一元组的主码
外码不一定要和被参照的主码同名
FOREIGN KEY(...) REFERENCES 参照的表名(...)
检查与违约处理:NO ACTION/CASCADE/SET NULL
参照关系与被参照关系 P46
有外键的是参照关系,没有外键的是被参照关系(可不写关系二字)
参照和被参照可以是同一个表
用户定义的完整性 P163
属性上约束条件的定义:NOT NULL/UNIQUE/CHECK
常用逻辑数学模型
层次模型
树形
有且只有根结点无双亲
根节点以外的结点有且仅有一个双亲
网状模型
图形
允许一个以上结点无双亲
一个结点可有多个双亲
关系模型
(二维)表
关系中每个分量都是一个不可分的数据项
不允许表中有表
面向对象数据模型
对象关系数据模型
半结构化数据模型
数据库的三级模式结构
外模式(子模式/用户模式)
视图
确保数据的安全性
局部数据的逻辑结构和特征的描述
外模式是模式的子集
一个数据库可有多个外模式,一个外模式可被多个应用程序使用,一个应用程序对应一个外模式
模式(逻辑模式)
数据库的中心和关键
全体数据的逻辑结构和特征的描述
一个数据库只有一个模式
内模式
数据物理结构和存储方式的描述
一个数据库只有一个内模式
关系数据库
关系
基本定义
候选码、主码(主属性)
性质
列是同质的,分量来自同一域
不同的列可来自同一域
行、列的顺序可调换
任意两个元组的候选码不能选相同值
候选码可唯一识别一个元组
每个分量必须是一个不可分的数据项
关系模式是静态的,关系是动态的
关系数据库的型是关系数据库模式
关系数据库的值是 关系数据库
一次一集合
集合为操作的单位
关系的完整性
关系代数
集合运算
并
差
做差不需要包含关系
交
R∩S=R-(R-S)
笛卡儿积
笛卡儿积和自然连接的区别:1.目的不同:笛卡儿积是将两个表的元组进行排列组合,连接是通过属性值相同的元组建立两个表的联系。2.结果不同:一个m行/元组,k1列/目的表;一个n行/元组,k2列/目的表;有a个属性中b个元组值相同笛卡儿积为(mn)行,(k1+k2)列的表;连接为b行,(k1+k2-b)列的表。
R有a目(列),m个元组(行);S有b目(列),n个元组(行);R×S=(a+b)目/列,mn元组/行
关系运算
选择
元组
格式
单引号!
投影
列
可能改变行和列
去掉相同的行
转化为SQL语句要加DISTINCT!
格式
连接
若进行连接,桥梁放中间 eg.S连SC连C,SC放中间
等值/θ连接
转化为SQL语句取两个表*
自然连接
特殊的等值连接
去掉相同的属性列
行和列两个角度
外连接
除运算
存在表A,B,取出表A中包含表B所有信息的关键字
。
SQL语言
一个属性名出现在多个表中,要用点表明来源!!!字符型是单引号!!!不是双引号!!!
数据定义
模式
表
建表
修改表(区分update)
删除表(区分delete)
视图
创建视图
若视图从一个基本表中导出,且只是去掉基本表某些行和某些列,保留主码,称为行列子视图
当select语句后选择的属性名较复杂(eg.聚集函数、多表),可采用命别名方式
查询视图仍用SELECT语句
DBMS对视图的查询等价为对基本表的查询(视图消解)
定义试图并查询视图和基于派生表的查询:一个定义永久保存在数字字典里,之后的查询可直接引用;一个语句执行后定义即被删除
更新用update
删除用delete
索引
数据查询
.
列顺序可不一致
select后可接属性、表达式、字符串常量、函数
DISTINCT消除相同列
通配符%、_只接LIKE/NOT LIKE
IS NULL/IS NOT NULL(不能用=)
AND优先级大于OR
BETWEEN...AND..包括上下限
order by默认升序(ASC),降序DESC
聚集函数
count()
除count外其他的都跳过空值
sum()
avg()
max()
min()
聚集函数不能在where里
连接查询P99
嵌套查询
子查询的SELECT语句不能用ORDER BY语句,只能用于最终结果查询
先执行子查询,再执行父查询
可先写出连接查询,再构造嵌套查询,从下往上
带有比较运算符的查询
ANY/ALL必须和比较运算符(=/>/<连用)
ALL对应所有,ANY对应任意一个
带有EXISTS的子查询
非空返回TRUE,空返回FALSE
集合查询
并UNION
交INTERSECT
差EXCEPT
基于派生表的查询P113
数据更新
插入
.
若按照建表属性顺序插入可不写属性列,若要写eg.student(sno,sname,ssex,sdept,sage)放在into后
若指出表的属性值,不赋值时自动设为null;不指出必须每个手动赋值
修改
。
删某一行
删除
删除满足条件的所有元组
并发控制
带来问题
丢失修改
卖票系统:在修改前读数据,相当于没修改
不可重复读
验算:运算后修改数据,导致最后结果与之前计算的不同,实际计算过程是对的
读“脏”数据
有ROWBACK
数据库恢复技术
事务
事务是恢复和并发控制的基本单位
要么做(COMMIT),要么不做(ROWBACK)
一个程序包含多个事务
特性
原子性
一致性
隔离性
并发执行的各个事务间不能互相干扰
持续性
一个事务一旦提交,对数据库的改变是持久性的
故障
事务故障UNDO
系统故障REDO
恢复技术
数据转储
只能恢复到转储时的状态
分类
静态/动态
海量/增量
登记日志文件
用于事务故障恢复和系统故障恢复
数据库设计
六个阶段
需求分析
通过调查现实世界要处理的对象,充分了解原系统的工作概况,分析用户需求,确定新系统功能
概念结构设计
将需求分析得到的用户需求抽象为E-R图
实体之间的联系
1:1
1:n
m:n
E-R图
三要素:实体、属性、联系
实体用矩形
题目没给属性就全部为实体,不要落下实体!
属性是围绕实体的具体化(eg.课程号是课程的属性,而学生是一个实体,不是属性)
联系用菱形
菱形内要用文字写明联系
联系可有属性!
属性用椭圆形
E-R图的集成存在冲突
属性冲突
类型、取值范围、取值集合不同
命名冲突
同名异意/同意异名
结构冲突
在一个应用中当作属性,一个被当作实体
实体包含的属性个数和排列次序不同
联系不同
逻辑结构设计
主码标下滑线
E-R图向关系模式/表的转换
分类
1:1联系 任选其一放
1:n联系 往n端放
若往1端放会造成极大的数据冗余
一般情况
自己指向自己
m:n联系 2个码联合组成主码,单独拿出来
注意加上联系的属性!
由关系模式到E-R图的转换
物理结构设计
选取一个最适合应用要求的物理结构
方法
B+树索引存取
hash索引存取方法
聚簇存取方法
把属性上具有相同值的元组集中存放在连续的物理块中
不太进行改变的数据库适用
数据库实施
数据库运行与维护
数据库的规范化
数据依赖
存在问题
数据冗余
更新异常
插入异常
删除异常
函数依赖
函数依赖不是关系模式中的某个/某些符合,要所有实例符合才可以!
非平凡的函数依赖
eg.(sno->sname,cno) 不存在包含关系
平凡的函数依赖
eg.(sno,cno->sno) 存在包含关系
完全函数依赖
。
部分函数依赖
传递函数依赖
.
码
超码
在主码的基础上加一些无关紧要的
候选码的真子集一定不是超码
候选码是最小超码
主属性
候选码中的一个属性
全码
子主题
整个属性组都是码
联系
范式
高层次的范式一定满足低层次的范式
关键是要判断谁是主码,主码和其他属性的指向关系
分类
1.主属性/候选码->1NF/2NF/3NF 非主属性/全码->BCNF2.看清楚题干问法:是消除了还是剩余? eg.满足2NF不满足3NF->消除了部分函数依赖,剩余传递函数依赖
1NF
不可再分,表中无表
最基础的范式
关系模式中的关系模式至少为1NF
存在部分函数依赖和传递函数依赖
判定为1NF判别其存在部分函数依赖即可
2NF
消除候选码的部分函数依赖
消除方法:投影分解
存在异常
3NF
消除候选码的传递函数依赖
BCNF
消除全码的部分函数依赖和传递函数依赖
条件
所有非主属性对每个码都是完全函数依赖
所有主属性对每一个不包含它的码也是完全函数依赖
X->Y,X不为非码,为主码
数据库的完整性
内容
数据的正确性
符合现实世界语义、反映当前实际情况
数据的相容性
数据库的同一对象在不同关系表中是符合逻辑的
数据的完整性约束条件
实体完整性
参照完整性
用户定义的完整性
完整性约束命名子句
。
触发器
定义在关系表上
一个触发器只能定义在一个表上
一个表中能有6个触发器
创建
触发器事件有3种/3种触发器类型
有3*2=6种方式
对于UPDATE/DELETE可用OLD./NEW.区分新旧值
删除
数据库的安全性
TSCE/TDI紫皮书
D
C1
自主存取控制DAC
C2
B1
强制存取控制MAC
B2
DAC+MAC
B3
A1
不安全因素
安全性
子主题
完整性
自主存取控制
授权
授予所有权限 grant all
select
insert
update(属性)
delete
可授权对象
DBMS
OWNER
WITH CHECK OPTION的用户
授权不能把权限授给祖先
对用户的授权
TO 'U1'@'localhost'
收回
区分grant (to)!
创建角色
创建
授权
表给角色
角色给角色(省ON语句)
创建用户
修改密码
强制存取控制
上读下写
若相等,既可读也可写
TS>=S>=C>=P
审计
事后检查的安全机制