数据库复习笔记 一.绪论

数据库系统的特点

  • 数据结构化
  • 数据共享性好, 冗余度低
  • 数据独立性高, 物理和逻辑上都是
  • 数据由 DBMS 统一管理:
    • 安全性
    • 完整性
    • 并发控制
    • 数据库恢复
  • 良好的用户接口

数据模型: 表示实体类型和实体间联系的模型

  • 概念数据模型: 信息模型, 描述信息结构, 按照用户观点建模, 又称 ER 模型
  • 结构数据模型: 基本数据模型, 或者直接就叫数据模型因为它很牛逼, 面向数据库的逻辑结构, 直接涉及到计算机系统和 DBMS, 按照计算机系统的观点对数据建模

ER 图, 不会画的打死

结构模型的要素

  • 数据结构
  • 数据操作
  • 数据的约束条件

结构数据模型#

层次模型#

树形结构表示实体类型和关系

  • 有且仅有一个结点无双亲, 该结点是根结点
  • 其他结点有且仅有一个双亲
  • 层次模型中每个结点 (片断) 表示一个记录类型
  • 每个记录类型包含若干个字段, 字段有字段名, 数据类型和长度等

数据操纵与完整性约束:

  • 插入时, 没有双亲结点不能插入子女结点
  • 删除时, 删除双亲结点要同时删除子女结点
  • 更新时, 要更新所有相应的记录

存储结构: 邻接法, 链接法

优点: 模型简单, 速度快, 实体间联系固定

缺点:

  • 实现多对多关系时, 需要采用冗余或虚结点方式, 易形成不一致性
  • 插入和删除限制多
  • 查询子节点需要通过双亲节点

网状模型#

用有向图 (网络) 结构表示实体类型及实体间联系的数据模型.

  • 允许一个以上的结点无双亲
  • 至少一个结点不止一个双亲

数据操纵与完整性约束:

  • 插入时, 允许插入未确定双亲结点的子女结点值
  • 删除时, 允许只删除双亲结点值
  • 更新时, 只需更新指定记录

存储结构: 常用链接法, 其它如引元阵列法, 二进制阵列法, 索引法等

优点: 更加直接描述现实世界, 存取效率高, 性能好

缺点: 结构复杂, 不利于用户掌握, DDL, DML 语言复杂; 数据独立性差

关系模型#

用表格表示实体集和实体间联系, 用外键来实现关系间的联系.

  • 关系 (Relation) = 一张表.
  • 元组 (Tuple) = 表里的一行 (一条记录).
  • 属性 (Attribute) = 表里的一列 (一个字段).
  • 主键 (Primary Key) = 身份证号, 能唯一区分每一行的那一列.
  • 域 (Domain) = 这一列的取值范围 (比如性别只能填男女 LGBTQABCDEFGHAJIMI)
  • 分量: 元组中的一个属性的取值

关系模式R (U, D, DOM, F):

  • R: 表名
  • U: 表有哪些列
  • D&DOM: 表填什么样的数据
  • F: 数据之间的依赖规则

各种键:

  • 候选键 Candidate Key: 能唯一标识一行数据且不多余的属性, 或属性组, 如学号, 身份证号
  • 主键 Primary Key: 候选键可以不唯一, 我爱用的那个就是主键
  • 超键 Super Key: 能唯一标识一行数据的属性集, 包含所有候选键. 可能多余, 例如 (姓名 + 学号 + 身份证号 + 玩不玩原神)
  • 组合键和全键: 如果主键不是单一的属性则称为组合键, 如果包含所有属性则称为全键.
    「说明这表设计得挺烂. 」 -- Gemini 3 Pro
  • 外键 Foreign Key: 这张表里不是主键, 但是在其它表里是主键, 用于建立两张表的联系.
    例子:
    学生表 (学号, 姓名, 班级号), 学号是主键, 班级号是外键
    班级表 (班级号, 班级名), 班级号是主键
  • 主属性: 只要是候选键里的, 不管是不是完整的主键, 都是主属性, 否则是非主属性

操纵与完整性约束:

插入, 删除和更新操作必须满足关系的完整性约束;
关系的完整性约束包括: 实体完整性, 参照完整性和自定义完整性

存储结构: 实体和实体间的联系都用表来表示, 表通常以文件形式存储

优点:

  • 建立在严格的数学概念基础上
  • 概念单一, 实体, 联系均用关系来表示
  • 存取路径对用户透明, 数据独立性更高, 保密性更好, 简化程序员工作和数据库开发建立工作.

缺点:

  • 存取路径对用户透明, 查询效率不高
  • 因存取路径对用户透明, 必须对用户查询进行优化, 增加了开发 DBMS 的难度

数据库系统的模式结构#

schema view level
External 外模式
子模式
用户视图
外视图
外部级
局部逻辑级
conceptual 模式
概念模式
概念视图
DBA 视图
概念级
全局逻辑
internal 内模式
存储模式
内部视图 内部级
物理级
存储级

外模式 External Schema: 用户视图, 局部, 多对一

外模式映像: 数据库逻辑结构改变, 只需修改外模式映像, 应用程序不变, 逻辑独立性

模式 Conceptual Schema: 总清单, 全局, 逻辑结构, 全体数据, 唯一

内模式映像: 数据存储结构改变, 修改内模式映像, 外部级和应用程序不用改变, 物理独立性

内模式 Internal Schema: 物理存储, 存储路径, 唯一

数据库管理系统#

DBMS, 包括:

  • 数据定义语言 DDL, Data Definition/Description Language
    • 建表, 删表
    • CREATE, DROP, ALTER
  • 数据操纵语言 DML, Data Manipulation Language
    • 查数据, 改数据
    • SELECT, INSERT, UPDATE
  • 数据库运行控制语言 DCL, Data Control Language
    • 管权限, 保安全
    • GRANT, REVOKE
  • 实用程序

工作流程:

  1. 用户在程序中嵌入 DML 的一个读记录语句. 控制转向 DBMS
  2. DBMS 检查合法性, 查找子模式表, 确定对应的存取权限
  3. DBMS 依据子模式/模式映象的定义, 确定应读入的模式记录
  4. DBMS 依据模式/内模式映象的定义, 确定应读入的物理记录
  5. DBMS 向 OS 发送读取所需物理记录的命令
  6. OS 启动 IO 程序, 执行读操作
  7. OS 将数据从数据库的存储区送到系统缓冲区
  8. DBMS 依据子模式/模式映象定义, 导出用户所要读取的记录格式
  9. DBMS 将数据记录从系统缓冲区传送到程序的用户工作区
  10. DBMS 向应用程序返回命令执行情况和状态信息

实现方法:

  • N 方案
    DBMS 模块加入到用户进程, DBMS 代码出现多副本, 性能大幅下降
  • 2N 方案
    每个用户有一个 DBMSshdow 进程和一个后台负责读写和日值的进程
  • M+N 方案
    2N 方案的改进方案, N 用户, M 个 DBMS 进程 (M<N)
  • N+1 方案
    1 个 DBMS 进程 (可设计成多线程的), N 个用户进程, 消息开销大

数据库的设计, 巴拉巴拉巴拉巴拉巴拉巴拉