文章目录
前言
本文是在软考软件设计师时写的,为了自我复习,必经教学相长,所以比较简陋:D
一、数据库体系结构
三级模式
1.== 外模式(用户视图):视图级==。数据库用户能看到和使用的局部数据的逻辑结构和特征的描述
2. 概念模式(概念视图):表级。对数据库中全部数据的逻辑结构和特征的描述,是所有用户的公共数据视图
3. 内模式(内部视图):文件级。对数据物理结构和存储方式的描述,是数据在数据库内部的表示方式
两级映像
- 外模式-概念模式映像保证数据的逻辑独立性
- 概念模式-内模式映射保证数据的物理独立性
集中式数据库系统
- 数据集中存储
- 数据集中化
- 数据安全性高
C/S结构
- 客户端复杂数据表示服务
- 服务器主要负责数据库服务
分布式数据库
- 数据独立性
- 集中与自治共享结合的控制结构
- 适当增加数据冗余度
- 全局的一致性、可串行性和可恢复性
二、数据仓库
- 面向主题:数据按组织变化
- 集成性:数据仓库的数据来源于分散的操作型数据,经过抽取、转换、加载(ETL)等过程,形成统一、综合的数据集合
- 相对稳定:主要进行查询操作,只有少量的修改和删除操作
- 反映历史变化:数据包含历史信息
三、数据库设计过程
概述
- 需求分析:分析当前和未来应用的数据要求,输出数据流图、数据字典、需求说明书
- 概念结构设计:对用户需求进行抽象、综合分析,输出ER模型(与数据库无关)
- 逻辑结构设计:将概念结构转换为某个DBMS所支持的数据模型,输出视图、完整性约束及应用处理说明书
- 物理结构设计 :为逻辑数据结构模型选取一个最适合应用环境的物理结构
3.1概念结构设计
流程
- 抽象数据
- 设计局部ER模型
- 合并局部模型消除冲突
- 重构优化消除冗余
ER模型
- 实体:实体是现实世界中可以区别其他对象的事件和事务
- 属性:属性是实体某方面的特征
- 联系:实体的联系分为实体内部的联系和实体与实体间的联系
3.2逻辑结构设计
数据模型
- 层次模型
- 网状模型
- 关系模型
- 面向对象模型
数据模型三要素:数据结构、数据操作、数据约束条件
关系的三种类型:基本类型、查询表、视图表
四、关系代数
并
综合2个表的所有元组,且去除重复
差
以左侧对象为主,在左侧对象的元组集合中去除右侧对象已有元组,则为差集
交
列出2个表都有的元组
选择
水平方向上对元组行进行选择
投影
垂直方向上对属性列进行选择
自然连接
二元运算,属性列数是二者之和,结果元组是同名属性列取值相等的元组
五、规范化理论
5.1基本概念
Armstrong公理
- 自反率:若属性集Y是属性集X的子集,且X是关系模式R的属性集U的子集,则X→Y在R上成立
- 增广律:若X→Y在R上成立,且Z是U的子集,则XZ→YZ在R上也成立
- 传递律:若X→Y和Y→Z在R上成立,则X→Z在R上也成立
- 合并规则:若X→Y和X→Z在R上同时成立,则X→YZ也在R上成立
- 分解规则:若X→Y在R上成立,且Z是Y的子集,则X→Z也在R上成立
- 伪传递规则:若X→Y在R上成立,且WY→Z也成立,则XW→Z在R上也成立
5.2范式
- 第一范式(1NF):如果关系R中所有属性的值域都是单纯域,并且关系中的每一个属性值都是不可再分的最小数据单位,则称R满足第一范式。第一范式是关系模式设计的基本要求,所有关系模式都必须满足第一范式
- 第二范式(2NF):如果关系模式R∈1NF,并且每一个非主属性都完全函数依赖于任何一个候选码,则称R满足第二范式。第二范式要求消除部分函数依赖,即非主属性必须完全依赖于候选码,而不是候选码的一部分
- 第三范式(3NF):如果关系模式R∈2NF,并且每一个非主属性既不部分依赖于码也不传递依赖于码,则称R满足第三范式。第三范式要求消除传递函数依赖,即非主属性不能通过其他非主属性间接依赖于候选码
- BCNF(Boyce-Codd范式):如果关系模式R中,每一个决定因素都包含R的一个候选码,则称R满足BCNF。BCNF是修正的第三范式,它要求决定因素必须包含候选码,从而解决了所有插入、删除操作异常的问题
六、SQL语言
6.1普通查询
分类 | 动词 |
---|---|
数据查询 | SELECT |
数据定义 | CREATE、DROP、ALTER |
数据操纵 | INSERT、UPDATE、ALTER |
数据控制 | GRAND、REVOKE |
6.2分组查询
SELECT 列名, 聚合函数(列名)
FROM 表名
WHERE 条件
GROUP BY 列名
HAVING 条件;
- SELECT子句:用于指定查询结果中要显示的列,可以是分组列、聚合函数或其他列。需要注意的是,如果SELECT子句中包含非聚合列,则这些列必须包含在GROUP BY子句中。
- FROM子句:用于指定查询的表名。
- WHERE子句(可选):用于在分组前对原始数据进行筛选,满足条件的记录才会被用于分组。
- GROUP BY子句:用于指定分组的列名。查询结果将按照这些列中的值进行分组。
- HAVING子句(可选):用于对分组后的结果进行筛选,即基于聚合函数计算的结果进行条件过滤
6.3权限控制
授权语句
GRANT 权限列表
ON 对象类型 对象名
TO 用户或角色列表
[WITH GRANT OPTION];
收回语句
REVOKE 权限列表
ON 对象类型 对象名
FROM 用户或角色列表
[CASCADE | RESTRICT];
七、并发控制
事务的特性
- 原子性
- 一致性
- 隔离性
- 持久性
并发控制
- 丢失更新
- ==不可重复读
- 读“脏”数据
封锁协议
- X锁(写锁)的加锁规则:若事务T对数据对象A加上X锁,其他事务不能再对A添加任意锁
- S锁(读锁)的加锁规则:若事务T对数据对象A加上S锁,其他事务只能对A再加S锁,不能再对A添加X锁