数据库系统概述
数据库系统和文件系统的区别
- 问题:
- 文件系统:数据之间的关系和约束难以维护,难以应对大型数据管理的需求。
- 数据库系统引入了抽象层次,包括外部模式、概念模式和内部模式,以更好地管理数据。数据库系统具有强大的数据管理和查询能力,可以更好地应对大型数据管理的需求,同时也可以更好地维护数据之间的关系和约束。
- 解决方法是引入三个抽象级别、两种数据独立性
- “Two Data Independence”
- 物理数据独立性指的是应用程序和数据库系统之间的物理层面的独立性。具体来说,它意味着更改数据的物理表示(比如存储位置、存储格式等)不应该影响应用程序的逻辑表示。例如,将数据从一个文件系统移动到另一个文件系统,应用程序不应该受到影响。
- 逻辑数据独立性指的是应用程序和数据库系统之间的逻辑层面的独立性。具体来说,它意味着更改数据的逻辑表示(比如数据模型、数据结构等)不应该影响应用程序的逻辑表示。例如,将一个表拆分成多个表或者合并成一个表,应用程序不应该受到影响。
- Three level of abstraction
- “three level of abstraction” 意为“三个抽象级别”,是数据库系统中的一个概念。它指的是在数据库系统中,为了解决应用程序与数据之间的分离问题,引入了三个不同的抽象级别来隐藏底层细节,使得应用程序能够更加方便地访问和操作数据。
- 外部模式(External Schema):定义了用户或应用程序所看到的数据的逻辑结构和访问方式,是与特定应用程序相关的数据表示。每个外部模式只涉及到数据库中的一部分数据,不需要关心其他部分的数据
- 概念模式(Conceptual Schema):定义了整个数据库的逻辑结构和访问方式,是与整个数据库相关的数据表示。它描述了所有数据之间的关系和约束,但不涉及具体的物理存储。
- 内部模式(Internal Schema):定义了数据在物理存储介质上如何表示和存储,是与具体存储介质相关的数据表示。它描述了数据的物理存储方式,包括数据的存储位置、存储格式等细节。
- “Two Data Independence”
Data model
- Data semantics:数据语义,数据的含义和解释方式。就是对数据的定义
- ER data model & relational model:
- ER:基于实体属性和关系的,所以更抽象;操作是基于实体之间的联系
- Relational model: 基于表格的;操作是基于关系代数的;一个关系由关系模式(schema)和关系实例(instances)两部分组成
- Schema: 定义表格的结构,包括表格的名称、属性名、和属性类型等
- Instances: 具体的数据集记录,由元组(tuple)组成;每个元组包含多个属性,每个属性都是单值的,domain:属性的取值范围
- key(还是有问题)
- foreign key:referenced/referening。例子:学生表格、课程表格、选课表格。referenced:学生表格、课程表格。referencing:课程表格。
relational model
- Relational algebra expression:(问题 没弄懂)
- Aggregate:
- Result of aggregation dont have name
SQL
- DDL ,DML, DCL
- DDL: create/drop. Alter table
- DML: select insert delete update
- DCL: grant revoke
- WHERE HAVING difference
- 我们不能用 WHERE 作用在 aggregation 上, HAVING 可以(do a filter with HAVING on aggregate function, but not with WHERE)
- Set operation(UNION, INTERSECT EXCEPT)
- 自动去重
- Null
- Any comparison with null return unknown
假设这三个是集合,true 包含 unkown,unknow 包含false
- EXISTS
- More efficient
- DIVISION
- 总的来说,这个查询的逻辑是:
- 从 students 表中寻找满足以下条件的学生姓名:
- 不存在这样一种情况: 有课程 ID 存在于 course 表中,但不存在与当前学生关联的 sc 表中的课程 ID。
- 从 students 表中寻找满足以下条件的学生姓名:
- ppt 例子
- 总的来说,这个查询的逻辑是:
- JOIN
- Natural join:
- sql 语句: JOIN… USING (Attribute)
- Natural join:
- VIEW
- WITH CHECK OPTION:对视图进行 UPDATE,INSERT 和 DELETE 操作时要保证更新、插入或删除的行满足视图定义中的谓词条件(即子查询中的条件表达式)
- WITH CHECK OPTION:对视图进行 UPDATE,INSERT 和 DELETE 操作时要保证更新、插入或删除的行满足视图定义中的谓词条件(即子查询中的条件表达式)
- Modification
- Delete
- Update
- Insert
- Delete
Database integrity & security
- 数据库完整性
- 广义完整性: 语义完整性、并发控制、安全控制、DB 故障恢复等
- 狭义完整性: 专指语义完整性,DBMS 通常有专门的完整性管理机制与程序来处理语义完整性问题。(本讲义指语义完整性)
- 完整性约束
- 断言assertion
- 一个断言就是一个谓词表达式,希望数据库总能满足的条件
- 一个断言就是一个谓词表达式,希望数据库总能满足的条件
- Trigger
- 过程性完整性约束
- 数据库安全性
- 数据库安全性控制
- 用户身份鉴别
- 存取控制
- 视图
- 审计
- 数据加密
- 用户身份鉴别
- 数据库安全性控制
Authorization
- grant
- revoke
ER 图
- degree of a relationship set:实体数量
- roles(没弄懂)
范式
- Armstrong 公理
- canonical cover
- 最小依赖集不一定是唯一的
- Lossless-join decomposition
- Dependency preservation
- BCNF decomposition
- 3NF decomposition
- 步骤
- 例子
- 步骤
External sort-merge
N: pages/blocks B: buffer pool pages
Join
Block Nested-loop join
Indexed nested-loop join
Merge-join
Hash join
Query optimization
- Rules
Transaction
- ACID
- 原子性 atomicity:DBMS 保证事务的一组操作,要么全做,要么全不做
- 一致性 consistency:DBMS 保证事务的操作状态是正确的
- 隔离性 isolation:DBMS 保证多个事务之间互相不受影响
- 持久性 durability:DBMS 保证已提交事务的影响是持久的
- Five state:事务有五种状态:活跃(Active)、部分提交(Partial Committed)、失败(Failed)、提交(Committed)和中止(Aborted)。事务在执行过程中从活跃状态开始,经过部分提交状态,最终要么提交,要么中止,失败状态是指事务执行过程中出现了错误或异常,需要中止。
- 冲突可串行化(Conflict Serializability):在并发执行的多个事务之间,如果它们的执行顺序对于结果的影响等价于某个串行执行顺序,那么这些事务就是冲突可串行化的。
- 锁
- 2PL: 可以保证冲突可串行性的 ;可能会产生死锁
- 严格2PL 要求在事务提交前,所有的锁都必须释放;而严谨2PL 是在事务提交后才释放锁。
- 2PL: 可以保证冲突可串行性的 ;可能会产生死锁