数据库文件的简单设计

发布于:2024-06-17 ⋅ 阅读:(118) ⋅ 点赞:(0)

一、背景

数据库文件是数据库软件系统存放数据的形式和载体。

有的数据文件分为基础文件和索引文件两种。


二、本文目的

只设计基础文件,不设计复杂的索引文件。


三、具体思路

分为两种,一种是二进制连续存放,另一种是文本文件格式。

(一)假设记录为如下:

1001  小明  男
1002  小红  女

(二)二进制存储格式为

1、每条记录连续存放,格式如下:
4个字节存放主键
10个字节存放姓名
5个字节存放性别

2、把下面两条记录的对应字段值,存入对应的字节区中。
1001  小明  男
1002  小红  女

具体做法:
       把1001存到4个字节中。
       接下来的10个字节靠左存放字符串'小明',多余的字节用'\0'填充。
       再连续5个字节存放字符'男',多余的用'\0'填充。

       把小花的记录存储也类似,连续存放。
       

3、注意字符集,一般用UTF8或者GBK。


(三)文本存放格式案例

1、用xml格式

内容如下:

<root>
  <line>
      <id>1001</id>
      <name>小明</name>
      <sex>男</sex>
   </line>
   <line>
      <id>1002</id>
      <name>小红</name>
      <sex>女</sex>
   </line>
</root>

特点是:每个元素有成对的标签包括,所有的字段构成一棵树。

标签名用户可以自定义设计。


2、自定义格式
后缀名可以任取,例如.mytxt,.mfff

格式如下:

1001 | 小明 | 男\r\n
1002 | 小红 | 女\r\n
\r\n


主要思路:
每台记录组成一行,用换行符结尾。
记录之间用一个间隔符隔开,此处用字符’|’。
最后一行为空,代表结束。

实际可以用其他字符隔开,例如逗号,空格。


四、总结

(一)设计存放数据的文件字节格式可以很灵活。

(二)可以慢慢的升级和改进。

(三)可以用一些算法来进行索引查询。


五、修改结构的难点

1、数据库的文件在存放数据时,里面的存储结构一般在设计时是固定的。


2、需要支持使用者用SQL语句改变库的名字。

一般修改文件中存放库名的字节内容就行。


3、需要修改文件的存储记录结构。

实现很难,因为数据连续存储,如果想增加字段,那么就有大规模的数据要往后移动。

如果删除字段,那么有大量数据往前移动。

如果缩短或者增加字段的字节占用个数,也需要大规模移动。


六、一些改进

1、把相邻的记录建立链式联系
使用链式文件存储,也就是每个记录有一个区域保存下一个记录的文件读取位置,允许文件存储顺序跳跃,只需要有记录指向,连成一条链。

链式结构能快速插入新记录和删除旧记录。


2、事先为每条记录开辟足够大的空间
例如:
规定每条记录总占用字节个数为100字节。

每次存储时每条记录的各个字段存放空间都在这100个字节中分配。

如果记录超出空间范围,另外建一个文件来存放超出规定范围的字段。