hello 数据库的复习资料又来了凹,这学期的老师一直只会念ppt,后面去蹭了安龙哥的课,体验极佳,希望考试能过8,ball ball了
1我们为什么要引入数据库这种方式
在操作系统当中,我们有了解到文件管理系统是一种管理文件的方式,但是对于大量复杂的结构化数据,单纯的使用内存管理的文件方式,利用人为管理是远远不够的,既然数据是结构化的,使用特定的数据管理方法是一个更好的方式
数据库管理解决的缺点如下
- 数据高度冗余: 数据基本是面向特定用户的
- 数据共享困难: 文件基本都处于私有状态(比如联机使用就很困难)
- 数据和程序缺乏独立性 : 没有逻辑独立性
数据库管理优点如下
1 数据结构化
在我们主要讨论的关系数据库当中,采用表格的方式存储,但是在自然世界当中,我们很多数据都不是结构化的,如何把现实生活当中的数据转化为结构化数据呢?我们需要构造数学模型从现实到计算机 分别建立 概念数据模型 逻辑数据模型 物理数据模型来构建数据库
- 概念数据模型
面向用户的系统数据模型,描述现实世界,摆脱DBMS的具体技术,集中分析数据对象之间的关系 - 逻辑数据模型
从数据库系统设计的角度来描述数据对象组成和关结构 - 物理数据模型
针对具体的DBMS设计数据模型,用于描述系统数据模型在具体DBMS中数据对象,存储方式,索引方式
概念模型 ER模型(entity relation) 注意这里表的什么说法,还是在概念上设计
实体: 一个现实世界当中对象。某某菜鸡小毛就可以算作是一个实体
实体当中有的有键,但有的没有键 被称作弱实体 也就是弱实体不能唯一的标识自己,必须通过连接强实体 比如家长们的连续必须依赖学生的朋友关系
(弱实体必须参与1:n关系,弱实体型必须完全参与识别联系)属性: 实体属性 用来描述实体的特征域: 属性的取值范围 比如学位(学士、硕士、博士)键: 唯一标识集合中每个实体的一组属性 每个实体的属性集合被称为键
候选键:属性不可以缺失
主键:在多个候选键当中的唯一标识实体型: 描述相同实体的属性类型实体集: 同一类型实体集合联系: 实体内部的联系和实体之间的关系(主要是实体之间的一些关系)
通常情况下,一个实体可以和其他多个类型的实体存在关联 关联的实体类型被称为联系的阶
关系存在多种类型,对应的有不同的物理实现方式
- 一对一联系
一个班级只有一个班主任,一个班主任只管理一个班级 - 一对多联系
一个班级有多个学生,每个学生只有一个班 - 多对多关系
在构建概念模型后,并不能直接在我们的数据库当中使用,在逻辑模型的建模过程中,我们需要对用户需求的概念模型进行转化
- 一个独立实体直接转化为一个关系表
- 弱实体 建立一个和独立实体建立依赖关系的关系表
- 一对一联系转化 互相添加外键
- 一对n联系转化 1的一边添加外键
2 数据冗余少: 范式保护
第一范式:数据库默认满足的范式 所有的字段都必须是单一属性
第二范式: 所有的内容都是全部依赖, 在数据当中经常出现这种现象 有些值和主键关系不是很大 比如一个音乐的数据集 ,有以下几个属性
音乐编号ID 乐曲名称 作曲家 国籍
很显然,作曲家的国籍只和作曲家是谁有关 和音乐编号ID号无关(这里我们只关心主键) 把作曲家和国籍再构建一个表 是更好的选择,使内容满足第二范式
第三范式: 主键没有部分函数依赖了,但是可能还有一些和主键相关的间接依赖 比如班课和专业是绑定的,他们和学生不能构建直接关系,消除表当中的推理过程构成三范数
3 数据控制统一(事务属性ACID)
- Atomicity原子性 事务当中所有元素作为一个整体提交 事务的元素是不可分的
默认的一个语句是具有原子性的,事务能让一串语句也具有完整性
- 开始事务:BEGIN TRANSACTION
- 提交事务: COMMIT TRANSACTION
- 回滚事务: ROLLBACK TRANSACTION
- 保存事务 SAVE TRABSACTIO 保存点名称 自定义的保存点
- Consistency一致性 事务完成 数据必须是已知的,数据处于一致状态
- isolation 隔离性 对数据进行修改的多个事务彼此隔离 (不应该彼此影响)
在并发处理上,加不同种类的锁来完成资源的互斥访问
- durability 持续性 事务完成后,对系统影响是永久的,出现故障也会回复,保持
对于数据的容错和恢复,一直是计算机
数据管理系统:和操作系统的软硬之间的交互界面类似,数据管理系统在操作系统和用户之间提供一个数据管理软件
- 数据定义功能: DDL 定义数据对象
- 数据操纵功能: DML 提供数据库的查询、插入、删除、修改操作
事务是并发控制的基本单位,这些操作要么都执行,要么都不执行,是一个不可分割的工作单位。
事务语句
checkpoint的使用方法
用户在事务内可以声明保存点的标记。 用户在事务进行回滚操作时,如果中间出现一系列错误,利用保存点回滚到对应的位置。
事务回滚的过程如下:
- 回滚至定保存点之后的语句
- 保留值定的保存点,清除后续的保存点
- 释放此保存点后的锁
- 被部分回滚的事务仍然处于活动状态,继续执行
存储过程
存储过程时预编译的SQL(编译和的代码已经进行优化)
存储过程时一个记录的集合,像函数一样的代码块实现一些功能,在调用的时候无需变一,直接进行使用
- 存储过程是预编译的代码段,执行效率高
- 保证数据安全
索引
索引是对数据库表中一列或者多列值进行排序的结构(键值+逻辑指针)。 数据库的索引类似数据的索引,允许搜索不必遍历整个数据库,不必扫描整个数据库。
- 索引加快数据库的检索速度
- 降低插入 修改 等维护任务速度
- 索引需要占据物理空间
视图
视图是一个虚拟的表,也可以对视图进行CRUD操作,但是并不是真实存在的,视图修改不影响基本表,方便联合查询
- postgre数据库当中包括 关系表 对象表 外部表 不包括索引表
- postgre 不包含数据库对象的是存储过程, 函数 触发器 都是某个数据库专有的对象属性
- postgre 利用pg_ctl 完成服务器的启停服务
- 数据仓库技术可以完成数据的集成
- 业务规则数据再数据库当中是一种元数据
- MySQL不是一种企业级DBMS
- 关系可以任意顺序,这使得笛卡尔积和数学定义不相同
- 表当中也不允许又重复行存在
- 主键的作用
- 标识关系表当中的不同元组
- 作为关联表的关联属性列
- 通过主键列的索引快速检索行数据
- 参照完整性 标注为外键的内容要么为空 要么必须在对应主键的域当中 保证数据的一致性
- 关系模型 包括 数据结构 操作方式 数据约束
- 专用的运算 一个针对行 一个针对列 连接的内容另说 笛卡尔积不是一个专用的运算类型
- 连接主要分为内连接和外连接
- 内连接 要求两个关系的匹配元组形成查询结果集
- 条件连接 在笛卡尔积当中选择满足条件的元组进行保存
- 等职连接 只对相同属性的相同元素包留
- 自然连接 两个表既然是相同属性 就把两个表的所有内容进行合并
- 外连接 在内连接当中,两个表连接的过程当中会有一些项丢失,外连接当中使用null进行补充
- 左外连接 最后的表一定要有作边的表的主键的信息
- 右外连接
- 全外连接
- 内连接 要求两个关系的匹配元组形成查询结果集
- 实体完整性 主键不能是null并且不能出现重复
- 自然连接是一种等值连接
- 在参照完整性当中保护数据一致性,可以定义级联 拒绝 设置为空
- text不是SQL语言的标准数据类型
- SQL语言特性
- 对数据库进行操作
- 数据库游标操作
- 数据库事务操作
- 修改表的结构 使用alter table
- distinct 消除重复的结果信息
- 数据库对象拥有可以收回赋予其他用户的访问权限
- 数据库利用on delete cascade 完成排序
- 数据应用系统开发
- 需求分析
- 系统设计
- 系统实现 完成数据库的创建任务
- 系统测试
- ER基本元素
- 实体
- 标识符
- 联系 (没有关系表)
- 实体关联其他实体的数量称为联系度数
- 在逻辑模型转化为关系模型的时候
- 实体转换为关系表
- 属性转换为列
- 联系转化为参照完整性约束
- 数据库管理的目标
- 实现应用对数据库访问
- 发挥数据库系统处理功能
- 确保数据库安全访问
- 事务特征
ACID- 原子性
- 持续性
- 一致性
- 隔离性
- 在行上加锁 系统并发的访问性能最好
- 如果所有事务都遵循两阶段锁定协议 事务并发执行都可以实现可串行化
- 存储过程是一组预先定义并且编译的SQL语句
- 实现模块化编程 共享宠用
- 加快程序运行速度
- 提高数据库的安全性
- 触发器特点
- 基于一个表创建,可以对多个表进行操作
- 被触发自动执行
- 不能带参数执行
- java嵌入SQL返回在resultSet当中
- 传递动态参数接口 preparedstatement
- 调用执行存储过程接口 callablestatement
- 数据库游标 是存储在内存当中的查询结果集合
- MongoDB文档存储
- Hbase列存储
- redis键值对存储
- NoSQL特点
- 分区
- 异步复制
- base
- CAP 分布式环境下设计和部署系统的三个核心需求
- 一致性
- 可用性
- 分区容忍性
- 第二范式:消除部分依赖
- 三:传递依赖
- 四:多值函数依赖
- 用二维表标识shirting实体之间和关系模型成为关系数据模型
- 进行多表查询的·时候 可以是信用 join连接条件 也可以使用where简历连接
- ODBC和JDBC都是微软提供的对数据库访问的标准API
- 关系当中所有属性都是主属性 一定达到2NF的要求
- 常见数据模型是层次 关系 网状数据模型
- 关系代数专用的关系运算包含 选择 投影 连接 除法运算
典型的数据库管理系统包括
- 数据库
- DBMS
- 应用程序
- 用户
- 数据库管理员(DBA)
- 对实体连接的第一个模型 实体联系模型ER
- DBS具有数据独立性特点 是因为采用了 三级层次模型
- jsp不用载入在浏览器上
- create procdure 产生对应的存储过程
- 输一局库当中没有触发器这个对象 利用function函数进行实现
- 视图·1是在基本表或者视图当中导入得到的
- ER图当中,椭圆标识对象类型 联系类型用菱形标识 实体类型用长方形标识
- 数据库当中最重要的软件是DBNS,最重要的用户是DBA
ER实体标识符具有特性
- 可以有一个或者多个属性
- 取值唯一
- 区分不同实例
- 具有代表意义的属性
数据库加锁管理最简单,行上加锁最安全
关系模型包括
- 数据结构
- 操作方法
- 数据约束
专门的关系运算 包括选择 投影 连接在数据存储层是负责对数据文件的操作访问
ER图当中的冲突类型主要包括属性冲突 命名冲突 结构冲突