什么是DBMS?

数据库是数据的存储、维护一个非常大的集成的数据

数据库是对现实世界的建模(实体entities 关系)

数据库管理系统DBMS是存储和管理数据库的软件包

文件系统和DBMS的对比

文件系统:应用程序访问的单个文件的集合

DBMS:用电脑处理的用于记录保存的系统

文件系统的缺点:

  • 数据冗余和不一致:多种文件格式,不同文件中的信息重复
  • 访问数据困难:需要编写新程序来执行每项新任务
  • 数据孤立
  • 完整性问题
  • 原子性问题
  • 并发访问异常
  • 安全性问题

DBMS的优点:

  • 独立性
  • 检索 selcet 查询 query
  • 完整性约束
  • 安全性(权限、访问控制)
  • 方便管理和使用
  • 并发访问
  • 恢复崩溃
  • 减少应用开发时间

数据模型

数据模型是一个描述数据、数据联系、数据语义以及一致性约束的概念工具的集合

  • 关系模型 (第二章)
    • 关系relation,就是由列和行组成的表格
    • 每个关系都有模式 schema
    • 模式就是一个实体的模版
    • 记录record:行
    • 属性attribute:列
  • 实体-关系数据模型(主要用于数据库设计)
  • 基于对象的数据模型(面向对象和对象关系)
  • 半结构化数据模型 (XML)
  • 其他旧模型:
    • 网络模型
    • 层次模型

数据抽象

  • 外模式(视图) external schema
  • 概念模式(逻辑模式) conceptual schema
  • 物理模式(内模式) physical schema

原因:数据独立性 data independence = 逻辑独立性 + 物理独立性

DBMS的查询queries

  • 关系代数和关系演算
  • structural query language(SQL)
  • 数据操作语言DML
    • 过程化DML:要求用户指定需要什么数据以及如何获得这些数据
    • 声明化DML:只要求用户指定需要什么数据
1
2
3
select name
from instructor
where instructor.dept_name = 'History';
  • 数据定义语言DDL
1
2
3
4
5
create table instructor (
ID char(5),
name varchar(20),
dept_name varchar(20),
salary numeric(8,2));

数据库设计

数据库设计分为 6 个阶段

  1. 需求分析
    1. 调查机构情况与熟悉业务活动,明确用户的需求,确定系统的边界,生成数据字典和用户需求规格说明书
    2. 搜集资料
    3. 分析整理
    4. 数据流图
    5. 数据字典
    6. 用户确认
  2. 概念结构设计

    将需求分析得到的用户需求抽象为概念模型,绘制E-R图

  3. 逻辑结构设计

    将E-R图转换为与 DBMS相符合的逻辑结构(包括数据库模式和外模式),例如E-R图向关系模型转换,再根据规范化理论对数据模型进行优化,设计用户子模式

  4. 物理结构设计

    通常关系数据库物理设计的内容包括关系模式选择存取方法、以及设计关系、索引等数据库文件的物理存储结构

  5. 数据库实施

    建立实际数据库结构、试运行、装入数据

  6. 数据库运行和维护

    维护数据库的安全性、完整性控制以及系统的转储和恢复;性能的监督、分析和改进;增加新功能;发现错误和修改错误

事务

  1. 原子性
  2. 一致性
  3. 隔离性
  4. 持久性

ACID properties

DBMS结构

  • 数据库管理系统
  • 查询评估引擎
    • 分析器
    • 优化器
    • 操作器
    • 操作评估器
  • CPU
  • 缓存管理器
  • 磁盘空间管理器
  • 并发控制
    • 事务管理器
    • 锁管理器
  • 恢复管理器

Untitled


SQL语句执行流程

Untitled

MySQL 可以分为 Server 层和存储引擎层两部分

  1. 连接器

    mysql -h10.10.0.18 -p3306 -uroot -p

    主要负责用户登录数据库,进行用户的身份认证,包括校验账户密码,权限等操作

  2. 查询缓存(已经移除)

    查询缓存主要用来缓存我们所执行的 SELECT 语句以及该语句的结果集

    执行查询语句时,看看有没有查询过,有则返回之前结果(以 Key-Value 的形式缓存在内存中),没有则继续查询。当然在真正执行缓存查询的时候还是会校验用户的权限,是否有该表的查询条件。

  3. 分析器

    分析器主要是用来分析 SQL 语句是来干嘛的

    第一步,词法分析

    第二步,语法分析

    然后报错

  4. 优化器

    去选择最优的执行方案

  5. 执行器

    首先执行前会校验该用户有没有权限,如果没有权限,就会返回错误信息,如果有权限,就会去调用引擎的接口,返回接口执行的结果。开始执行的时候,要先判断一下你对这个表 T 有没有执行查询的权限,如果没有,就会返回没有权限的错误