Skip to content

哈尔滨工业大学(哈工大) 2024 秋数据库系统实验

Notifications You must be signed in to change notification settings

DWaveletT/HIT-SQL-Lab

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 

Repository files navigation

哈工大数据库系统实验(2024 年秋)

实验内容像是一拍脑袋想出来的,体验很糟糕。

挂在 Github 上留个纪念,供后人参考。只保留了源码,需要进行构建请参考下方的说明。如果有帮助的话,希望给个 Star)

目录

  • 实验一:数据库系统开发;
  • 实验二:Buffer Manager。

实验一

既要设计实体极多的关系模型,还要编写用户友好的界面,还要像大杂烩一样展示各种 SQL 功能,整个实验的体验只能说是很糟糕。

实验目录下,E-R 文件夹放置了生成 E-R 图所用的 LaTeX 源码。编译需要使用支持 ctex 和 tikz 的 LaTeX 环境,如果不需要编译可以直接用 E-R.pdf 或者对应生成的 E-R-1.pngManagement 文件夹放置了实现用户界面的前后端代码(大部分代码由 ChatGPT 实现)。db_init.sql 文件可以在 SQL 里执行,创建数据库 university 并自动装填好测试数据;前后端主要用 flask 实现,使用 python 运行 app.py 连接上 mysql 数据库,同时在本地打开前端界面。

总之是技术栈大杂烩,LaTeX (TikZ), HTML (jQuery, Bootstrap), Python (Flask), SQL(MySQL), AI(ChatGPT) 全用上了,真是酣畅淋漓的吃史!

实验二

其实是存储管理与查询优化算法的设计Buffer Manager 二选一。

稍微吐槽一下为什么我选了后者:前者实验任务繁多,和实验一一样典型的有啥内容就往实验课里面堆,测试数据要自己造,实验细节十分模糊,估计验收还要和助教扯皮。总之,我实在是不信任学校老师可以设计出正常的实验课(更何况从下发代码里同时出现 11 年、15 年、23 年代码,看上去已经是十多年前的遗产了),而后者看上去要靠谱得多。

要查看 doxygen 生成的文档需要在网上下载 doxygen 并在文件夹目录下运行 make doc 编译生成网页;要生成可执行测试程序需要在文件夹目录下运行 make

代码实现的时候有一些注意点:

  • bufHashTbl.cpp 当中计算哈希值时,将地址强转为 long 类型,在 64 位机子可能无法通过编译,比较正确的写法可能是转换成 intptr_t 类型。
  • file_iterator 的实现和文档描述有较大出入,需要对 file_iterator.h 进行较多修改才能使用迭代器遍历 page 的功能。
  • 需要填充的 buffer.cpp 里,有个 pageNo 存在笔误写成 PageNo 了。
  • Page 类没有析构函数,写 delete bufPool 析构会爆炸,只是要通过验收的话,建议不析构 bufPool,让操作系统擦屁股。

About

哈尔滨工业大学(哈工大) 2024 秋数据库系统实验

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published