关系数据库
- 概念
- 在关系数据模型中,把记录类型称为关系模式
- 闭包:键的闭包应当包含R的所有属性
- 完整性约束
- 实体完整性
- 参照完整性
- 用户自定义的完整性:可以用触发器实现
- 注意:视图不能实现完整性约束
- 主键
- 全码:全部属性组为关系模式的候选键
- 候选码:排除没有出度,从剩余的看能不能推出来全部,能则为候选码
- 断言是为了保证数据的完整性
- 触发器
- 是SQL语句的集合
- 不能传递参数
- 通过事件来触发,可以实现比check更复杂的约束
- 举例:
- 级别增加一级,工资增加500元
- 关系代数运算
- 不自动去重复列,需要进行选择
- 集合运算符
- 差
- 笛卡尔积:
- 相乘,共有m+n列
- 自然连接
- 去除重复列
- 比较运算符
- 逻辑运算符
- 关系运算符(连接、除)
- 差的选择等于选择的差
- 除:只除有的
- 表连接
- 左外连接:有共同字段找悬浮数据
- 带条件的自然连接与笛卡尔积后选择条件等价
- 没有公共属性的自然连接会转换为笛卡尔积操作
- 分类
- 左外连接:舍弃右边没有的
- 右外连接:舍弃右边没有的
- 完全外连接:所有舍弃的都放入
- 查询优化
- 按条件选择后,自然连接,再按条件查询
- 规范化
- 关系定义
- 关系不可以嵌套定义,其属性必须是原子的、不可再分的
- 关系模式:表的列
- 函数依赖:列之间的关系
- 范式
- 1NF:属性不可分,存在部分函数依赖(学号,课程号)
- 2NF:消除部分函数依赖
- 3NF:消除非主属性对码的传递函数依赖【主属性存在部分函数依赖】
- BCNF:消除主属性的部分函数依赖
- 4NF:多值属性构成的(如工号、手机号)
- 最小函数依赖集
- 不含传递依赖
- 不含部分依赖
- 每个函数依赖的右部都是单属性!
- 函数依赖集等价
- 蕴含的属性间的依赖信息等价
- 即函数依赖的闭包相等
- A+=B+
- E-R图
- 双线椭圆表示多值属性
- 依赖关系
- 部分函数依赖:Y不完全依赖于X
- 传递函数依赖:(学号,学院,学院领导)
- Armstrong公理
- 传递率
- 合并规则
- 伪传递率:间接推导
- 增广率
- 模式分解
- 类型
- 无损连接分解:
- 保持原有的分解:看元素是否全
- 表示
- (候选码)+
- 查询优化
- 原则:提早执行选择
- 其他:投影和其他运算同时进行,避免重复扫描关系
- 索引改进
- 当查询是性能瓶颈时,在关系上建立索引
- 当更新是性能瓶颈时,考虑删除某些索引(索引会引起更新操作的效率降低)
- 有利于大多数数据查询的索引设置为聚簇索引
- 性能优化
- 减少多表查询
- 减少物化视图
- 使用带UNION的条件子句等价替换OR子句
作者:哥们要飞