文件组织

把数据库映射到文件的一种方法是使用多个文件,在任意一个文件中只存储一个固定长度的记录。另一种选择是构造自己的文件,使之能够容纳多种长度的记录。

1、定长记录
文件中的每个记录定义(伪代码)如下:

type insructor=record
     ID varchar(5);
     name varchar(20);
     dept_name varchar(20);
     salary numeric(8,2);

假设每个字符占一个字节,numeric(8,2)占8个字节。假设我们为每个属性ID、name和dept_name分配可以容纳的最大字节数,instructor记录占53个字节。简单方法是使用前53个字节来存储一个记录,接下来53个字节存储第二个记录,以此类推。但是这个方法有俩个疑问:

  • 除非块的大小正好是53的倍数,否则一个记录会存储在俩个块中。读写一条记录需要俩次块访问
  • 从这个结构中删除一条记录十分困难。
    解决上面第一个问题,就是直接在一个块中只分配它能完整容纳下的最大记录数。每个块中余下的字节不使用。
    第二个问题:在文件的开始处,分配一定数量的字节为文件头。我们需要在文件头中存储的只有内容被删除的第一个记录的地址。我们用第一个记录来存储第二个可用记录的地址,依次类推。我们可以把这些存储的地址看作指针,被删除的记录形成了一条链表,经常称为空闲列表。
    在插入一条新纪录的时候,我们使用文件头所指向的记录插入记录,并改变文件头的指针以指向下一个可用记录。如果没有可用的空间,我们就把这条记录添加到文件末尾。
    删除文件中的记录

2、 变长记录
变长记录存储:前面是定长存储字节,后面是变长存储字节
变长记录的表示

entries记录位置,如果一条记录被删除,它所占用的空间被删除,那么entries被设置成删除状态,并且删除的记录的空间被后续记录占用,空闲空间还是在entries的最后一个条目和第一个记录中
分槽的页结构

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值