
数据库简单实现(C 语言)
介绍
一、数据结构
自定义基础数据类型
数据字典表数据结构
表信息存储
列信息存储
自定义表信息存储
数据块头信息
数据项(元组)存储信息
过滤表达式结构
其他
二、全局变量
三、宏定义
四、INSERT 实现
五、CREATE 实现
六、SELECT 实现
七、函数以及用户界面函数
该程序在 windows 环境,dev c++编译器下正常编译运行,linux 下需要自行编写 strnicmp()
与 itoa()
一些问题: 由于时间的限制,在块存储结构以及数据字典表的存储上进行了简化,若之后
要实现同步等操作的实现将会出现错误,还有较多的冗余代码,没有抽取封装成单独的函数。
SELECT 的实现只支持单表查询,WHERE 语句只支持一个过滤表达式。其中有部分归并排序
和外排序的代码没有完成,但是 SELECT 中有块内排序的函数。
介绍
该程序是数据库的简单实现,包含 INSERT 插入操作,CREATE 建表操作,SELECT 查询操作,
在数据结构设计时考虑了 DELETE 删除操作,所以在 Item 结构中增加了 bool 型变量 IsDelete
标记是否已经删除,因为在 postgresql 中的 DELETE 是假删除,所以 DELETE 操作很容易实现,
我也在显示的函数里加入了 IsDeleted 的判断,有需要自行独立添加相关函数即可。自定义
表(ID 为 10000 以上,文件名即为 ID)在文件存储中是以块(页)形式存储的,大小为 8K,
元组的长度是变长的,字符串也是变长存储。
该程序实现的主要难度在于数据结构的设计,指针操作,内存中数据存储理解以及文件操作。
涉及的核心函数主要有:
内存操作 malloc()、free()、memcpy()
文件操作 fopen()、fclose()、fread()、fseek()、fwrite()
总体难度不大。
相关文档
评论