数据库系统原理
  • 数据库系统原理
  • 引言
    • 数据库系统概述
  • 关系模型介绍
    • 关系数据库结构
    • 数据库模式
    • 关系代数
      • 选择运算
      • 投影运算
      • 笛卡尔运算
      • 连接运算
      • 集合运算
      • 其他运算
  • SQL介绍
    • SQL语言分类
    • SQL数据类型
    • SQL数据库操作
    • SQL数据表操作
    • SQL数据操纵语言
    • SQL数据查询语言
    • 集合运算
    • 聚集函数
  • 中级SQL
    • 连接查询
    • 内连接
    • 外连接
    • 交叉连接和自连接
    • 视图
    • 完整性约束
    • SQL用户和授权
  • 高级SQL
    • 函数
    • 存储过程
    • 触发器
  • ER模式数据库设计
    • 数据库设计过程概览
    • 需求分析
    • 实体-联系模型
      • 复杂属性
      • 映射基数和弱实体集
    • 将E-R图转换为关系模式
    • E-R模型设计
  • 关系数据库设计
    • 数据库设计规范化
    • 函数依赖理论
    • 关系范式
  • 半结构化数据
    • 半结构化数据
  • 应用程序开发
    • ADO.NET访问数据库技术
    • 断开模式数据查询
    • 连接模式数据更新
  • 数据存储结构
    • 磁盘
    • 文件的存储
    • 文件的逻辑结构
    • 文件组织
  • 索引
    • 索引基本概念
    • B树索引
    • B+树索引
    • MySQL索引的基本语法
    • 联合索引
  • 查询处理
    • 查询处理概述
  • 查询优化
    • 查询优化概述
    • 查询树的启发式优化(代数优化算法)
  • 事务
    • 事务的概念
    • 事务的特性
    • MySQL事务处理
    • 可串行化
  • 并发控制
    • 并发控制概述
    • 封锁
    • 两阶段封锁协议封锁
    • 多粒度封锁
    • 活锁和死锁
    • 基于时间戳排序的并发控制
    • 乐观控制法
  • 恢复系统
    • 数据库恢复概述
    • 数据库恢复的实现技术
    • 基于检查点的数据库恢复
Powered by GitBook
On this page
  • 定长记录
  • 变长记录
  • 字节串表示形式
  • 定长表示形式
  1. 数据存储结构

文件组织

Previous文件的逻辑结构Next索引基本概念

Last updated 4 months ago

外存中,数据库以文件形式组织,而文件又是由记录组成。

  • 文件组织:记录在物理文件中的实现。

  • 文件组织的两种方式:定长记录和变长记录

定长记录

就是每条记录都是占用一定长度的字节数。记录的排列也就是一张表格每一行有相同的长度,以一行为单元进行增加删除等修改操作。

优点:起止点容易计算,不需搜索匹配。

存在的两个问题:

  • 删除:删除后是在其位置补充一个记录还是忽略这个位置

  • 长度:若物理上每个块的大小不等于每个记录的长度倍数,则必然在读这样的记录时要访问两个块。

删除方法:

  1. 删除记录后,把记录依次上移。缺点是移动次数过多。

  2. 把最后的记录补到删除的位置。只需移动一次,但是和方法一一样,都需要移动结点,操作不灵活,出于灵活的考虑必然会想到使用指针,也就是第三种方法。

  3. 首先,文件增设“文件首部”,其中有一个指针指向第一个被删除的记录位置,所有被删除记录的位置都用指针链接起来,构成“空闲记录链表”。缺点是这些指针链接的记录被称为“被栓记录”,若被删记录被删掉,则指向记录的指针称为“悬挂指针”,所指空间称为“垃圾”,也就是别人无法使用而又被空闲着。

插入方法:可以根据删除的方法而定,直接插入尾部,或插入到空位置。

变长记录

实际应用中定长记录格式文件较多,但为了增强文件的灵活性,在数据库系统中,有时需要文件中的记录是变长格式。变长记录的表示有字节串形式和定长形式两种。

字节串表示形式

  • 尾标志法:把每个记录看成连续的字节串,然后在每个记录的尾部附加“记录尾标志符^”,表明记录结束。

  • 记录长度法:记录的开始加一个记录长度的字段来实现,读取数据时以此作为记录结束与否的标志。

保存不同类型记录于一个文件,每个字段可以变长,允许重复字段。使用文件文件或二进制文件实现,缺点是删除操作和插入操作均很费力。

字节串表示形式缺点:

  • 每条记录长度不一,被删除后的位置难于使用

  • 记录要增长很难

定长表示形式

  1. reserved space 预留空间技术

  2. Pointers 指针技术

预留空间技术 Reserved space ——暂时不用的空着

取所有记录中最长的一个记录的长度作为存储空间的记录长度,来存储变长记录。对于预留空间,仍如同定长格式的表格状。

缺点:如果每个记录的差别很大,就会造成大量空间的浪费。

指针技术

解决记录长度差很大的方法,省去过多的空间浪费。每个定长记录后面增加指针指向在上一方法中可以合并为同一记录的其他记录。被指向的整体称为溢出块。

若干个定长记录组成变长记录,每个链表一个记录,如同一章由若干节组成。