您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 项目/工程管理 > minisql系统详细设计说明书课案
MiniSQL数据库系统详细设计报告共36页·1·文档编号:2版本号:1.00文档名称:详细设计报告项目名称:MiniSQL数据库系统设计开发时间:2001年10月----12月开发人员:组长:周森3991102440(计算机99F)组员:郭振宇3991102462王淮3991102449韩璟璐3991102438何遥3991102461指导老师:孙建伶MiniSQL数据库系统详细设计报告共36页·2·1.引言1.1项目名称MiniSQL数据库系统设计与实现。1.2项目背景和内容概要数据库系统设计与实现实验。主要目的:通过实验加深对DBMS及其内部实现技术的理解。实践系统软件开发的工程化方法。1.3相关资料、缩略语、定义MiniSQL:MiniStructuralQueryLanguageEngineAPI:applicationprogramminginterface.2.系统结构2.1系统结构图Figure1:MiniSQL数据库系统系统结构图图中各标号简明解释:①判断并接受用户字符输入,使做为解释器的输入。①②③④④⑥⑥⑥④⑦CatalogManagerErrorLib③③MiniSQL内核部分BufferManagerRecordManagerB+Figure1ControlInterfaceCmdInterpreterAPILibMiniSQL用户部分MiniSQL数据库系统详细设计报告共36页·3·②解释器对用户输入进行翻译,产生操作数(所需API编码以及参数数组)。③执行选定的API,返回用户所需的输出。④BPlus、Record、Catalog类方法注册至APILIB,并整合生成适合于用户调用的API。⑥BPlus、Record、Catalog类调用Buffer类的方法实现自己各自的方法。⑦Buffer类方法对数据库文件进行直接操作。2.2系统目录结构Figure2:MiniSQL数据库系统的文件结构其中bin目录下存放MiniSQL可执行文件;include目录下存放MiniSQL.h文件和相关的lib文件,可以应客户的需求进行应用级开发;Docs目录下存放一些系统开发文档,系统安装文档,系统维护文档以及版权信息文档等等。同时也提供系统对比已经商业化的DBMS,尚未开发的功能的相关文档。Data目录下存放数据文件,其下一级目录为各个数据库的名称,再下一级为各个MiniSQLbinincludedataDocsMiniSQL根目录可执行程序可用于二次开发的头文件系统运行相关文档,用户手册数据存放目录DB1DB2DBn数据库名称做为该数据库数据存放的根目录DATAFILE1DATAFILEnFigure2MiniSQL数据库系统详细设计报告共36页·4·数据库的具体数据文件。数据文件类型:对应于每一个table建立两个文件,dbf文件为具体数据存放文件,同时关于该table的目录信息亦存放于dbf文件的头信息处,idx文件为为primarykey建立的索引文件。2.3程序文件清单模块名程序文件名运行平台语言简要描述用户接口解释器Interpreter.hWindows/LinuxC/C++解释器模块头文件Interpreter.cppWindows/LinuxC/C++解释器模块实现文件API集成Ctrl_Center.hWindows/LinuxC/C++APILib头文件Ctrl_Center.cppWindows/LinuxC/C++APILib实现文件异常处理Error.hWindows/LinuxC/C++ErrorLib头文件Error.cppWindows/LinuxC/C++ErrorLib实现文件系统内核B+树ZBtree.hWindows/LinuxC/C++B+树模块头文件ZBtree.cppWindows/LinuxC/C++B+树模块实现文件RecordRecord.hWindows/LinuxC/C++Record模块头文件Record.cppWindows/LinuxC/C++Record模块实现文件CatalogCatalog.hWindows/LinuxC/C++Catalog模块头文件Catalog.cppWindows/LinuxC/C++Catalog模块实现文件BufferBuffer.hWindows/LinuxC/C++Buffer模块头文件Buffer.cppWindows/LinuxC/C++Buffer模块实现文件系统集成MainMiniSQL.hWindows/LinuxC/C++系统主程序头文件MiniSQL.cppWindows/LinuxC/C++系统主程序实现文件GvariableGlob_Var.hWindows/LinuxC/C++系统全局变量头文件Glob_Var.cppWindows/LinuxC/C++系统全局变量实现文件2.4基本设计概念1)系统目标设计并实现一个精简单用户SQLengine,并在其中实现表定义、索引、标记录操作功能。其中:(1)表定义中列(属性)的类型至少支持三种(integer、char、float);(2)每个表上要求至少建一个主键上的B+树,支持多属性主键;(3)记录的插入、删除、修改等,即时更新相应的索引;(4)记录的搜索至少实现按主键查找,只是主键上的范围查找,包含遍历。2)结构清晰(1)用户模块和内核模块完全分开。(2)内核部分B+、Record、Catalog三个模块之间坚决不能互相调用方法和函数。(3)内核部分B+、Record、Catalog三个模块不能访问物理文件,而由Buffer模块实现物理文件操作的所有细节。(4)APILib根据B+、Record、Catalog三个模块的方法整合生成适合用户模块调用的API。(5)内核各个模块只向上负责,简化了各个模块之间的调用关系。MiniSQL数据库系统详细设计报告共36页·5·2.5程序模块说明2.5.1Gvariable模块(系统集成子系统)1)目标:定义系统各种全局变量2)程序文件:Glob_Var.h,Glob_Var.cpp3)主要数据结构:FilePtr(由buffer模块提供)classFilePtr{public:unsignedlongFilePageID;//页编号unsignedintOffset;//页内偏移voidInitialize();//初始化为(0,0)void*MemAddr();//转化为当前内存地址,由buffer负责转换voidShiftOffset(intoffset);//相对当前地址滑动offset};其他全局的主要数据结构见API集成模块。4)调用的其他模块:Buffer模块5)算法:无6)逻辑流程图:无7)测试要点:变量声明和定义,测试略。2.5.2Main模块(系统集成子系统)1)目标:协调各其他各模块之间的关系,最终负责系统运行2)程序文件:MiniSQL.h,MiniSQL.cpp3)主要数据结构:MSG定义的是Get_Command返回的消息,用于消息循环enumMSG{CREATE,SELECT,INSERT,UPDATE,DELETE,DROP,QUIT}msg;4)调用的其他模块:API集成模块,Gvariable模块5)算法:参考windows消息机制。6)逻辑流程图:(1)主程序流程:intmain(){Init_MiniSQL();//初始化一些基本配置Run_MiniSQL();//交互操作,是本程序的主体Exit_MiniSQL();//先善后操作,再退出}(2)Run_MiniSQL()程序流程函数采用的是类似MFC的消息循环机制,从Get_Command得到MSG消息,在调用相应的处理函数(来自APIlib)。voidRun_MiniSQL();{msg=SELECT;//使得MSG不等于QUIT,进入循环while(MSG!=QUIT){//消息循环MiniSQL数据库系统详细设计报告共36页·6·try{msg=Get_Command(.....);//根据消息调用各处理switch(msg){caseCREATE:Create(...);break;创建记录caseSELECT:Select(...);break;选择记录caseINSERT:Insert(...);break;插入记录caseUPDATE:Update(...);break;更新记录caseDELETE:Delete(...);break;删除记录caseDROP:Drop(...);break;删除表caseQUIT:return;}}catch(intERROR_CODE){//根据ERROR_CODE,打印错误信息}}7)测试要点:变量声明和定义,测试略。2.5.3异常处理模块(用户接口子系统)1)目标:异常处理模块,定义系统所有可能的异常情况,并分配异常代号。2)程序文件:error.h,error.cpp3)主要数据结构:#defineErrorNameErrorCode;//异常宏定义char*ErrorMessage[];//相关异常信息4)调用的其他模块:无5)算法:无6)逻辑流程图:无7)测试要点:模拟ErrorCode,调用DispatchError(interrorcode)函数处理异常。2.5.4API集成模块(用户接口子系统)1)目标:根据B+、Record、Catalog、Interpreter四个模块所提供的方法整合生成适合于用户调用的API。此模块同时要求最终实现include目录下用于应用级开发所需的头文件。2)程序文件:Ctrl_Center.h、Ctrl_Center.cpp3)主要数据结构:见逻辑流程图4)调用的其他模块:Gvariable模块、B+模块、Record模块、Catalog模块、Interpreter模块、Gvariable模块。5)算法:在流程图里6)逻辑流程图:其中各主要操作流程(为直观计,相关的全局主要数据结构即列在一边)MiniSQL数据库系统详细设计报告共36页·7·InterpreterCatalog.createZBTree.create翻译命令成参数有效性检查及新表的创建B+tree的初始化Create:Catalog.Create(TB_Create_Info&,char*)TB_Create_Info参数来自InterpreterZBTree.Create(char*)参数表示B+Tree的key有属性组成信息//interpreter对命令解释得到的create的各种信息//使用者:catalogtypedefstructCreate_Column*pCreate_Column;typedefstructCreate_Column{charColumnName[32];//字段名(规定最长为32位)Column_TypeColType;//字段类型,如int,float,charintlength;//字段类型长度,如char(8)Column_Valuemin;//下限,如例中的00000000Column_Valuemax;//上限,如例中的12345678Operator_TypeOperType;//关系运算符类型,如,=,=等等boolIsNull;//isnull=1,则此字段有isnull的限制boolIsPrimary;//isprimary=1,则此字段是primarykeypCreate_Columnnext;};classTB_Create_Info{TB_Create_Info();~TB_Create_Info();intTotalColumn;//字段总数pCreate_Columnhead;//字段链表头charTableName[32];//表名(规定最长为32位)};//catalog分析建表的信息后按index的要求给出的组成主键的信息//使用者:indexchar*KeyI
本文标题:minisql系统详细设计说明书课案
链接地址:https://www.777doc.com/doc-3849112 .html