数据库基础
数据库系统(DBS)组成
- 数据库:(数据)
- 硬件:
- 软件:管理系统(狭义数据库),操作系统
- 人员:管理员,开发,用户
三级模式-两级映像
- 三级模式
- 外模式:视图
- 模式:表
- 内模式:物理存储
- 两级映射
- 外模式与模式映射:逻辑映射
- 模式与内模式映射:物理映射
数据库设计
- 需求设计:分析需求产生数据流图,数据字典,需求说明书
- 概念结构设计:将E-R图,实体属性图
- 逻辑结构设计:将E-R图转换为关系模式
- 物理设计:根据表结构生成物理数据库
数据模型
数据模型三要属:数据结构,数据操作,数据约束
E-R模型
- 实体-联系模型,椭圆表示属性,长方形表示实体,菱形表示联系
- 联系类型:1:1,1:N,M:N
- 属性分类:简单属性和复合属性,单值属性和多值属性,NULL属性,派生属性
关系模型
即数据库的表,包含实体属性,标识实体的主键与外键
模型转换
- 每个实体对应一个关系模式
- 1:1联系:联系作为一个属性,一方作为另一方的属性存在
- 1:N联系:联系可以作为一个关系模式,也可以在N端中加入1端实体的主键
- M:N联系:联系必须作为一个关系模式,其主键时M和N的联合主键
关系代数运算
- 简单运算:并(∪),交(∩),差(-)
- 笛卡尔积(*):S1S2,S1中每条记录依次与S2所有记录合成一条记录,合成后,属性有S1+S2列,记录有S1\S2条
- 投影(Π):选着某一列的值,运算对象可以用列名,也可以用列号
- 选择(δ):根据条件选择某条记录
- 自然连接(⋈):显示列名相同,且值相同的记录,列名相同的列只显示一次
数据库约束条件
函数依赖
- X可以唯一确定Y,则X确定Y,或Y依赖于X
- 部分函数依赖:(A,B)可以确定C,(A,B)中的一部分也可以确定C
- 传递函数依赖:A可以确定B,B可以确定C,则A可以确定C
键与约束
键
- 超键:可以唯一标识记录的属性的集合
- 候选键:超键去掉冗余属性,剩余的属性就是候选键下·主键:任选一个候选键,都可作为主键
- 外键:其他表中的主键
- 主属性:构成某一个候选键的属性
约束
- 实体完整性约束:即主键约束,主键值不能为空,且不能重复
- 参照完整性约束:即外键(外表的主键)约束,要么在外表中真实存在 ,要么为空,不能是外表中不存在的值
- 用户自定义完整性约束:对属性的自定义约束
范式
第一范式(1NF):每一列都是一个不可分的数据项也就是表中不能有小表
第二范式(2NF):在1NF的基础上,每个非主属性完全函数依赖于候选键,即主键由单个属性构成,
- 第三范式(3NF):在2NF的基础上,非属性不存在传递依赖
- BC范式:在3NF的基础上,主属性有不存在部分函数依赖与传递函数依赖 ,每个依赖的决定因素必定包含候选键
范式的优缺点
范式的目的:降低依赖
范式化的优点:重复数据很少甚至没有,节约空间,更新不需要修改多张表,有利于数据库维护
- 范式化的缺点:查询时,需要大量的关联,浪费性能
模式分解
- 有损依赖:有列消失了
- 无损依赖:没有列消失
- 保持函数依赖:分解之后,任然可维护原有的依赖集,即去除传递依赖后,分解后任意一个依赖关系的依赖项与被依赖项,必须在某个分解子集中同时出现
- 分解后具有无损连接性的充分必要条件:R1∩R2->(R1-R2),或者R1∩R2->(R2-R1)
数据库应用技术
事务管理
事务的四种特性
- 原子性
- 一致性,数据前后时一致的
- 隔离性,过程是互不干扰的
- 持续性,结果是持续的
三个问题
- 丢失更新:典型的 a=a++ 并发问题
- 不可重复读:if (a == 1)else if( a == 2),执行此过程是a由2变成1,程序逻辑错误
- 读脏数据:事务1回滚数据(则回滚前为脏数据),但是脏数据被事务2读取,并进行处理,处理完回数据库一看,完蛋,数据对不上了
三级封锁协议
- 一级:修改时加排它锁(X锁),事务结束释放
- 二级:修改时加排他锁,事务结束释放,读取时加共享锁(S锁),读完释放
- 三级:修改时加排他锁,事务结束释放,读取时加共享锁(S锁),事务结束释放
数据库安全
数据库故障
- 事务内部故障:逻辑错误,运算溢出
- 系统故障:操作系统故障,停电
- 介质故障:物理介质损坏,几率小破坏性大
- 计算机病毒:
数据库备份
- 冷备份(静态转储),速度快,简单,缺点:数据库停机,整库备份
- 热备份(动态转储),无冷备份缺点,缺点,不能出错
- 完全备份:整库备份
- 差量备份:备份上一次完全备份不同的数据
- 增量备份:备份与上一次备份不同的数据
- 日志文件:记录SQL输入,可以达到实时备份
数据库高级应用
分布式数据库
通过分片模式与分布模式把的模式整和成一个全局的模式
分片模式
- 水平分片:每一条数据存放在不同地方
- 垂直分片:每一列数据存放不同地址
分布透明性
- 分片透明性:不知数据分片存储方式
- 位置透明性:不知数据物理存储位置
- 逻辑透明性:不知局部的数据模型
- 复制透明性:不知复制的数据来源、
数据仓库
- 数据来源:从普通数据库清洗而来,经历了抽取,清理,装载,刷新
- 特点:面向主题,相对稳定,一般不做修改,在特定事件做大量操作
- 用途:数据分析,反映历史的变化
数据挖掘
- 目的:发掘数据间的关系,发现剩余价值
- 手段(分析方法):
- 关联分析:分析同时发生的事情,总结多个事件关联性
- 序列分析:将事件根据发生的时间构建序列,总结事件的周期性
- 分类分析:将一组数据根据一些特点,进行分类,然后总结出数据的特征,
- 聚类分析:将拥有共同特点的多组数据,进行聚合,总结出这些组的特征
商业智能
- 数据预处理:抽取(E)、转换(T)、加载(L)
- 建立数据仓库:
- 数据分析:联机分析处理(OLAP)与数据挖掘
- 数据展示:结果可视化展示