软考-中级软件设计师-03 数据库系统
2022-05-14
03 数据库系统
三级模式-两级映射
- 内模式(物理级数据库):如何存储数据(格式等)
- 概念模式(概念级数据库):表级别(关注【概念模式-内模式映射】)
- 外模式(用户级数据库):视图(隔绝概念模式的修改【外模式-概念模式映射】,灵活性)
数据库设计过程
ER模型:与物理数据库无关
关系模式:表形式,规范化理论
E-R模型
矩形:实体;椭圆:属性;菱形:关系
子模型集成
- 逐步集成
- 一次集成
集成产生的冲突
- 属性冲突(属性域或取值冲突)
- 命名冲突(同名异义,异名同义)
- 结构冲突(可能一个作为表,一个作为列)
实体型转换为关系模式
- 1:1 - 转成两张表,菱形联系可跟任意一个
- 1:n - 转成两张表,菱形联系跟N
- m:n - 转成三章表,菱形联系单独一张表
ps.即使是多对多对多的,也只需一个关系来表示菱形
关系代数
-
并:注意:相同行只显示一次
-
交
-
差
-
笛卡尔积(✖):完全组合;属性数为两关系相加;行数为两关系行数相乘
-
投影
-
选择
- 连接:都有的属性只保留一个**(这点和笛卡尔积不同)**;等值连接、自然连接
规范化理论
函数依赖
部分函数依赖:其中的某一个属性,可以形成函数依赖
价值与作用
非规范化可能存在的问题:数据冗余,更新/插入/删除异常
键
- 超键(可能存在冗余属性):唯一标识元组
- 候选键(超键消除多余属性->候选键,可以有多个)
- 主键(候选键任选一个)
- 外键:其他关系的主键,对表做关联的时候可用
求候选键:图示法
根据依赖关系画依赖图,找到所有入度为0的节点,尝试遍历所有节点,成立则为候选键。注意有可能是多个节点组合成候选键。若没有入度为0的节点,则找既有入度也有出度的节点,同样进行遍历分析。
范式
级别越高,规范程度越高
主属性:属于候选键的一部分
第一范式:当且仅当所有域只包含原子值,即不可再分
第二范式:第一范式的基础上,不存在部分依赖
第三范式:第一范式的基础上,没有非主属性传递依赖于码时
BC范式:所有函数依赖的左边部分必须包含候选键
例题:
答案:C D A
模式分解
- 保持函数依赖分解:函数依赖关系不变(冗余的函数依赖不需要保持)
- 无损分解:可以还原,可通过联结还原成原始的关系模式
或者:表格法
假设有一行全部是a,则说明还原好了,也就是无损分解。
或者:代数运算法(仅限于分解为两个的情况)
并发控制
事务
- 原子性(全做or全不做)
- 一致性(转账前后加起来钱都一样)
- 隔离性
- 持续性
并发存在的问题
- 丢失更新
- 不可重复读
- 读脏数据
封锁协议
死锁
- 预防
- 解除
数据库完整性约束
分类
- 实体完整性约束:如主键不能为空
- 参照完整性约束:外键约束
- 用户自定义完整性约束
- 触发器:更加复杂的用脚本写的约束
数据库安全
数据备份
- 冷备份(静态备份):数据库关闭情况下的备份
- 热备份(动态备份):正常运行时的备份
根据备份量区别:
- 完全备份
- 差量备份(备份上一次完全备份之后变化的数据),更有利于备份恢复
- 增量备份
数据库故障与恢复
数据仓库与数据挖掘
数据仓库
- 面向主题
- 集成的
- 相对稳定的(非易失的)
- 反应历史变化(随着时间变化)
反规范化(逆规范化)
牺牲一些空间和规范,提高查询效率
大数据
4V
- volume 数据量
- velocity 速度
- variety 多样性
- value 值