# 数据库系统 **Repository Path**: SubaruPleia/database-system ## Basic Information - **Project Name**: 数据库系统 - **Description**: 中南大学简化版数据库管理系统 - **Primary Language**: Unknown - **License**: MulanPSL-2.0 - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-09-09 - **Last Updated**: 2025-09-18 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README 中南大学简化版数据库管理系统 介绍 本项目是中南大学计算机学院《大型平台软件设计实习》课程设计的简化版数据库管理系统(DBMS)。系统实现了基本的SQL编译、存储管理和查询执行功能,支持标准的SQL数据操作语言(DML)和数据定义语言(DDL),包括表的创建、数据插入和查询等核心操作。 系统采用模块化设计,分为SQL编译器、存储系统和数据库引擎三大核心模块,具备清晰的架构和良好的可扩展性。虽为简化版本,但完整实现了从SQL解析到数据存储和检索的全流程,是学习数据库系统内部机制的优秀实践项目。 软件架构 database_system/ ├── sql_compiler/ # SQL编译器模块(郭玉昱负责) │ ├── lexer.py # 词法分析器:识别关键字、标识符、常量、运算符 │ ├── parser.py # 语法分析器:构建语法树,支持四类SQL语句 │ ├── semantic.py # 语义分析器:存在性、类型、列数检查 │ ├── planner.py # 执行计划生成器:转换为逻辑执行计划 │ └── catalog.py # 模式目录管理 ├── storage/ # 存储系统模块(毛译负责) │ ├── page.py # 页式存储实现:支持页分配、释放、读写 │ ├── buffer.py # 缓存管理:LRU/FIFO策略,命中统计与日志 │ └── file_manager.py # 文件管理:数据持久化存储 ├── engine/ # 数据库引擎模块(王鑫章负责) │ ├── executor.py # 执行引擎:支持CreateTable、Insert、SeqScan等操作 │ ├── storage_engine.py # 存储引擎:实现行与页的映射、磁盘组织 │ └── catalog_manager.py # 系统目录管理:元数据维护 ├── cli/ # 命令行接口 │ └── main.py # 主程序入口 ├── tests/ # 测试套件 │ ├── test_sql.py # SQL编译器测试 │ ├── test_storage.py # 存储系统测试 │ └── test_db.py # 数据库系统集成测试 └── utils/ # 工具模块 └── models.py 核心特性: • 支持标准SQL语法解析和执行 • 页式文件存储管理(4KB/页) • 缓冲池管理(LRU/FIFO替换策略) • 系统目录管理(元数据即数据) • 简单的查询执行引擎 技术限制: • 不支持事务处理 • 不支持并发控制 • 仅支持简单索引 • 无查询优化器 • 无访问控制机制 安装教程 1. 环境要求 ◦ Python 3.8+ ◦ 磁盘空间:至少10MB可用空间 ◦ 内存:建议至少256MB可用内存 2. 获取代码 git clone cd database_system 3. 安装依赖 # 本项目为纯Python实现,无需额外安装依赖包 4. 初始化系统 # 系统将在首次运行时自动创建必要的目录结构 python cli/main.py 使用说明 1. 启动数据库系统 python cli/main.py 2. 基本操作示例 -- 创建表 CREATE TABLE students (id INT, name VARCHAR(50), age INT) -- 插入数据 INSERT INTO students VALUES (1, 'Alice', 20) INSERT INTO students VALUES (2, 'Bob', 22) INSERT INTO students VALUES (3, 'Charlie', 19) -- 查询所有学生 SELECT * FROM students -- 条件查询 SELECT name, age FROM students WHERE age > 20 -- 删除记录 DELETE FROM students WHERE age < 20 -- 再次查询验证删除结果 SELECT * FROM students -- 退出系统 EXIT; 3. 数据存储位置 ◦ 数据库文件默认存储在项目目录下的data/文件夹中 ◦ 系统元数据存储在data/catalog/目录 ◦ 用户数据存储在data/tables/目录 参与贡献 我们欢迎并感谢任何形式的贡献!参与流程如下: 1. Fork 本仓库 2. 新建 Feat_xxx 分支(请使用描述性分支名) 3. 提交代码(请遵循现有代码风格) 4. 新建 Pull Request 核心贡献者: • 毛译(存储系统与文档) • 王鑫章(数据库引擎与功能整合) • 郭玉昱(SQL编译器) 特技 1. 多语言支持:使用 Readme_XXX.md 支持不同语言,例如 Readme_en.md, Readme_zh.md 2. Gitee 官方博客 https://blog.gitee.com 3. 了解更多优秀开源项目:https://gitee.com/explore 4. https://gitee.com/gvp:Gitee最有价值开源项目,综合评定出的优秀开源项目 5. 官方使用手册:https://gitee.com/help 6. 开发者风采:https://gitee.com/gitee-stars/ 本项目作为中南大学计算机学院教学项目开发,遵循教育用途开源协议。 sqlcompiler是第一个步骤单独实现的一个sql编译器 storage是第二个步骤单独实现一个数据库引擎