数据库-基础

  • 数据库原理重刷,流水帐记录

  • 参考资料

    https://mooc.study.163.com/course/1000031000

  • 更新

    1
    19.02.15 初始

导语

  • 流水账

数据库

  • 数据库(DB)

    • 长期存在在计算机内,有组织,可共享的数据集合.
  • 数据库管理系统(DBMS)

    • 数据库 + 一组用以访问、更新和管理这些数据的程序.
    • 主要特性
      • 数据访问的高效和可拓展性.
      • 缩短应用开发时间
      • 数据完整性和安全性
      • 数据的独立性,保证与应用的隔离.
      • 并发访问和鲁棒性(可恢复)
    • 发展历史
      • 文件数据系统
      • 网状和层次数据模型
      • 关系数据模型(Relational database system)-重点
      • 面向对象数据库系统(OODBMS),物理存储层较麻烦.
      • 对象关系数据库系统(ORDBMS),逻辑层使用面向对象,物理层保持关系型数据库.
      • 面向应用数据库系统等其他.
    • 主流开源数据库
      • MySQL: LAMP中的M,流行的企业软件堆栈.
      • PostgreSQL: 高可拓展的对象关系型数据库管理系统.
  • 数据库系统模式

    • DB
    • 三层结构
      • 视图层: 应用程序
      • 逻辑层: 描述数据库存储什么数据及这些数据间的关系.
      • 物理层: 描述数据在物理设备中如何存储.
    • 数据视图
      • 实例与模式,类比 编程语言的 类型和变量.
        • 模式: 数据库总体设计.类似变量.
          • 物理模式: 物理层描述数据库的设计
          • 逻辑模式: 逻辑层描述数据库的设计
        • 实例,类似变量,存储在数据库的信息集合.
      • 模式有内模式/外模式之分,如图所示,可以通过逻辑层的外模式设计做到对不同的应用程序隐藏或显示部分数据.
    • 物理/逻辑独立性
      • 物理独立性: 修改物理存储结构,而不需要改变逻辑结构.
        • 这意味这,应用程序独立于物理存储,减少迁移成本.
      • 逻辑独立性: 数据逻辑结构的改变不影响应用程序.
        • 较难实现,一般通过映射完成.
  • 数据库设计步骤

    • 数据库设计
    1. 需求分析: 分析需求,确认需要的数据类型、应用程序、业务.
    2. 概念数据库设计: 使用E-R模型(后面重点)或其他高层次模型,描述数据
    3. 逻辑数据库设计: 概念模型转换为所使用DBMS支持的数据模型.
    4. 结构优化: 关系标准化,检查冗余和异常结构
    5. 物理数据库设计: 索引,集群,数据库调优
    6. 创建数据库并测试等: 后续.
  • 实体联系模型(E-R模型)

    • ER
    • 实体: 对象.例如,客户、账户、银行等.
    • 联系: 实体之间的关联.例如,A1账户由客户Json拥有.
    • 将E-R图转换为关系数据模型是数据库设计的重要一环.
  • 关系模型

    • 对应E-R图的表格
      table
      关系数据库
    • 子模式,基于逻辑层创建,数据均来自逻辑层.
      student
      子模式
  • 数据库语言

    • Data Definition Language(DDL,数据定义语言)
      • 创建数据库表,定义模式
      • 指定存储结构,访问方法和一致性约束
      • 编译后可以得到数据字典
        • 源数据
        • 数据库模式
        • 数据存储结构
        • 访问方法和约束
        • 统计信息
        • 授权
    • Data Manipulation Language(DML,数据操纵语言)
      • 增删改查等.
      • 过程化DML(python,java等)
      • 声明式DML(SQL,Prolog)
    • Data Control Language(DCL,数据控制语言)
  • SQL

    • SQL = DDL + DML + DCL

    • 三种使用场景

      • 交互环境: 命令行,终端等
      • 通过 ODBC JDBC使用.
      • 宿主语言中嵌入SQL
    • 例子:

      • 找到用户 customer-id 152 的用户

        1
        2
        3
        SELECT customer-name
        From customer
        WHERE customer-id = '152'
      • 找到客户152的账户余额

        1
        2
        3
        SELECT account.balance
        FROM depositor.account
        WHERE depositor.customer-id = '152' and depositor.account-number = account.account-number
  • 数据库使用

    • DB
    • 数据库用户
      • 普通用户
      • 程序员,SQL调用
      • 高级用户,sql或相关工具镜像数据挖掘.
      • 特殊用户,编写专门数据库应用,CAD,KDB,ES等.
    • 数据库管理员DBA
      • 最高权限(运维?)
      • 日常删库到跑路.🤣
  • 数据库体系结构

    • 数据库体系结构
    • 存储管理器
      • 提供底层数据存储与应用程序及查询之间,提供接口.
      • 对数据库的数据进行存储/检索/更新.
      • 包括:
        • 事务管理
          • 事务: 数据库完成单一操作的逻辑功能集合.例如:转账操作.(ACID)
            • 原子性,
            • 一致性,不破坏系统完整性
            • 隔离性,互不影响
            • 持久性,数据修改持久化.
          • 事务管理组件: 确保系统故障/事务失败的情况下,数据库保持 一致性.
          • 并发控制管理器: 并发事务之间的交互,影响DBMS性能的关键.
        • 授权及完整性管理
        • 文件管理,文件系统与数据文件/数据字典/索引文件之间的交互.
        • 缓存管理
    • 查询处理器
      • 接收数据库语言输入,返回结果给用户.
      • 不同的查询语句逻辑上等价,但实际执行的代价开销相差很大.引入有基于代价的查询优化策略.
      • 包括
        • 解析翻译
        • 优化
        • 执行
  • 应用程序体系结构

    • 应用程序
    • CS架构,客户端-服务器架构.
    • 基于web采用中间件的应用程序.
  • 总结

    • 数据库管理系统用于维护及查询大量数据集.
    • 抽象使得数据具有独立性.
    • E-R模型.关系模型.
    • 经典架构