数据库
2021-01-20 14:12:18 177 举报
AI智能生成
数据库
作者其他创作
大纲/内容
基本概念
数据库系统DBS
数据库DB
数据库管理系统DBMS
核心
DBS的核心是DBMS
DBMS的核心是DB/数据
DB的核心是数据模型
常见DBMS(关系型)
Oracle(甲骨文)
DB2 (IBM)
SQL Server(微软)
MySQL
Access
数据库发展
(数据管理技术发展)
(数据管理技术发展)
人工管理阶段
数据不保存(可通过人工保存)
应用程序管理数据(在人工管理阶段时期,没有管理数据的软件系统,应用程序不仅要管理数据的逻辑结构,还要设计其物理结构、存取方法等)
数据不共享(数据是面向应用程序的,多个应用程序使用相同的数据时必须重新定义,进而导致数据冗余)
数据不具有独立性(数据的逻辑结构或物理结构发生变化后,必须对应用程序做相应的修改)
文件系统阶段
数据无结构
数据可长期保存(在使用时由外存调入到内存)
通过文件系统管理数据
数据共享性差,冗余度高(在文件系统中,一个(或一组)文件基本上对应于一个应用程序,即文件仍然是面向应用的。)
独立性差
数据库系统阶段
数据结构化
数据的共享性高,冗余度低,易扩充
数据独立性高
逻辑独立性
物理独立性
数据由DBMS统一管理和控制
数据模型
组成
数据结构
数据操作
完整性约束
分类
概念模型:E-R 实体-联系
实体
联系
属性
逻辑模型:
层次:能表示1:1, 1:n 的关系
网状:能表示m:n
关系
面向对象:(继承:子类继承父类(超类)所有属性和方法)
物理模型
应用:三世界两化
关系数据库基本理论
关系模型
关系数据结构
关系操作
传统集合运算:并∪、交∩、差 - 、笛卡尔积×
关系运算:选择、投影、连接、除
5种基本运算:选择、投影、并、差、笛卡尔积
关系完整性
实体完整性
约束对象:主码
约束条件:唯一且不得为空
约束体现:Primary Key
违约处理:拒绝执行
参照完整性(引用完整性)
约束对象:外码
约束条件
可为空
若不为空,须等于关联表已有的属性
约束体现:Foreign Key
违约处理
拒绝执行(默认)
级联操作
设置为空
用户自定义完整性
约束对象:任意属性
约束条件:任意
约束体现:Check,not null,unique(唯一但可为空)
违约处理:拒绝执行
连接
等值连接
自然连接:去掉重复列的等值连接(是一种特殊的等值连接)
左外连接:限制右表,左表所有值都要出现,包含重复列,匹配不上的用空值代替
右外连接
全外连接:= 左外 + 右外
E-R图转为关系模式
若联系R为1:1联系,则每个相关实体的码均可作为关系的候选码
若联系R为1:N联系,则关系的码为N端实体的码
若联系R为M:N联系,则关系的码为相关实体码的集合。
有时,联系本身的一些属性也必须是结果关系的码属性。
有时,联系本身的一些属性也必须是结果关系的码属性。
SQL 结构化查询语言
特点
综合统一
DDL
DML
DCL
面向集合
非过程化
使用方式
交互式/独立使用/自主型/自含型
嵌入式、嵌入高级语言(宿主语言/主语言)中、宿主型
嵌入式SQL语句与
主语言之间的通信
主语言之间的通信
(1)SQL通信区:
向主语言传递SQL语句的执行状态信息,
使主语言能够据此信息控制程序流程
向主语言传递SQL语句的执行状态信息,
使主语言能够据此信息控制程序流程
(2)主变量:SQL语句中使用的主语言程序变量,
用于向SQL语句提供参数和将SQL语句查询数据库的结果交主语言处理
用于向SQL语句提供参数和将SQL语句查询数据库的结果交主语言处理
(3)游标:系统为用户开设的一个数据缓冲区,
存放SQL语句的执行结果,指示所取出元组的位置,
用于协调SQL面向集合与主语言面向记录这两种不同的处理方式。
存放SQL语句的执行结果,指示所取出元组的位置,
用于协调SQL面向集合与主语言面向记录这两种不同的处理方式。
(4)建立和关闭数据库连接
简单
DDL
DML
DCL
关系的规范化
为什么进行规范
冗余度大
修改异常
删除异常
插入异常
函数依赖
平凡函数依赖
非平凡函数依赖
部分函数依赖:X→Y,且存在X的一个真子集也能决定Y
完全函数依赖:X→Y,且不存在X的一个真子集也能决定Y
传递函数依赖:X→Y→Z
模式分解
1NF:最基本要求,数据项不可再分
2NF:消除非主属性对码的部分函数依赖(非主属性对码都是完全函数依赖)(2NF是完全函数依赖的关系)
3NF:消除非主属性对码的传递函数依赖(没有非主属性的关系一定满足3NF)
BCNF:消除主属性对码的部分和传递函数依赖(若关系为二元关系,一定满足BCNF)
查询优化
代数优化:先做选择,少做连接,不做笛卡尔积
物理优化:优化器
保证数据库安全性的手段
用户标识和鉴别
用户标识(用户名)
口令
个人特征(生物特征)
智能卡
存取控制
组成
权限定义(保存在数据字典)
权限检查:进行相应存取控制
分类
DAC自主存取控制(C级):grant,revoke
MAC强制存取控制(B级):
主体:用户 (对用户划分等级:许可证)
客体:数据 (对数据划分等级:密级)
视图(是一种安全机制)
审计(审计日志文件)
用户级审计
系统审计
数据加密
替换
置换(变换顺序)
保证数据完整性的方法
实体完整性
参照完整性(引用完整性)
用户自定义完整性
触发器
DML触发器
insert
delete
update
DDL触发器
表
视图
登录触发器
数据库恢复
故障
事务故障
事务死锁
undo
系统故障
无需用户参与
关机重启
介质故障
需要用户参与
有备份导入,无备份重做
计算机病毒
是程序/代码,不是错误的程序或代码
最重要的两大特性
破坏性
传染性
解决办法
杀毒软件
手动清除
重装系统、格式化
故障的解决办法(备份,利用冗余数据)
数据转储(后备副本)
静态转储
无运行的事务
动态转储
必须配合日志文件
日志文件
先写日志文件,后更新数据库
系统故障恢复和事务故障恢复都必须使用日志文件
日志写入顺序必须与事务执行时间次序一致
日志文件中检查点记录用于提高故障恢复效率
事务三种状态
begin transaction
commit
rollback(undo)
事务四个特性
原子性 A
事务是一个原子操作,不可再分,全做或全不做
一致性 C
一旦事务完成(不管成功还是失败),系统必须确保它所建模的业务处于一致的状态,而不会是部分完成部分失败。
隔离性 I
可能有许多事务会同时处理相同的数据,因此每个事务都应该与其他事务隔离开来,防止数据损坏。
持续性 D
一旦事务完成,无论发生什么系统错误,它的结果都不应该受到影响,这样就能从任何系统崩溃中恢复过来。
并发控制
并发操作产生的问题
丢失修改
不可重复读
读脏数据
锁
排它锁 X:只允许加锁的事务进行读取和修改,不兼容任何锁
共享锁 S:允许加锁的事务进行读取,只兼容共享锁
三级封锁协议
一级封锁协议:修改前加X锁,结束后释放,解决丢失修改
二级封锁协议:一级封锁协议基础上,在读取前加S锁,读取后立即释放,解决了读脏数据问题
三级封锁协议:一级封锁协议基础上,在读取前加S锁,直到事务结束后释放,解决了不可重复读
死锁和活锁
活锁
解决:先来先服务
死锁
解决:undo(撤销)
预防
一次封锁法
顺序封锁法
并发调度的可串行化:两段锁协议
封锁阶段:只能加锁
释放阶段:只能释放锁
多粒度封锁:意向锁
数据库的设计
策略
自顶向下
自底向上
逐步扩张
混合策略
方法
新奥尔良
基于E-R模型
第三范式
ODL(面向对象)
阶段
需求分析 工具:数据流程图和数据字典 数据字典包括
数据项
数据结构
数据流
数据存储
数据处理
概念结构设计(E-R模型),独立于DBMS的设计阶段
逻辑结构设计(E-R图转成关系模式,第三范式设计方法,依赖于DBMS)
物理结构设计阶段(存储结构和存取方法) 常用存取方法
B+树索引
聚簇方法
HASH方法
数据库实施:测试(尽可能找出更多错误)
数据库运行维护(维护周期最长)
0 条评论
下一页