已阅读5页,还剩7页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
文档编号:3 版 本 号:1.00文档名称 : 用户手册 项目名称 :MiniSQL 数据库系统设计开发时间:2001年10月-1月 开发人员:组长: 周森 3991102440 (计算机99F)组员: 郭振宇 3991102462 王淮 3991102449 韩璟璐 3991102438 何遥 3991102461指导老师: 孙建伶1. 系统目录结构MiniSQLbindataDocsMiniSQL根目录可执行程序系统运行相关文档,用户手册数据存放目录DB1DB2DBn数据库名称做为该数据库数据存放的根目录DATAFILE1DATAFILEnFigure 2Figure2:MiniSQL数据库系统的文件结构其中bin目录下存放MiniSQL可执行文件;include目录下存放MiniSQL.h文件和相关的lib文件,可以应客户的需求进行应用级开发;Docs目录下存放一些系统开发文档,系统安装文档,系统维护文档以及版权信息文档等等。同时也提供系统对比已经商业化的DBMS,尚未开发的功能的相关文档。Data目录下存放数据文件,其下一级目录为各个数据库的名称,再下一级为各个数据库的具体数据文件。数据文件类型:对应于每一个table建立两个文件,dbf文件为具体数据存放文件,同时关于该table的目录信息亦存放于dbf文件的头信息处,idx文件为为primary key建立的索引文件。2 程序文件清单模块名程序文件名运行平台语言简要描述用户接口解释器Interpreter.hWindowsC/C+解释器模块头文件Interpreter.cppWindowsC/C+解释器模块实现文件API 集成Ctrl_Center.hWindowsC/C+API Lib头文件Ctrl_Center.cppWindowsC/C+API Lib实现文件异常处理Error.hWindowsC/C+Error Lib头文件Error.cppWindowsC/C+Error Lib实现文件系统内核B+树ZBtree.hWindowsC/C+B+树模块头文件ZBtree.cppWindowsC/C+B+树模块实现文件RecordRecord.hWindowsC/C+Record模块头文件Record.cppWindowsC/C+Record模块实现文件CatalogCatalog.hWindowsC/C+Catalog模块头文件Catalog.cppWindowsC/C+Catalog模块实现文件BufferBuffer.hWindowsC/C+Buffer模块头文件Buffer.cppWindowsC/C+Buffer模块实现文件系统集成MainMiniSQL.hWindowsC/C+系统主程序头文件MiniSQL.cppWindowsC/C+系统主程序实现文件GvariableGlob_Var.hWindowsC/C+系统全局变量头文件Glob_Var.cppWindowsC/C+系统全局变量实现文件3. 基本设计概念1)系统目标设计并实现一个精简单用户SQL engine ,并在其中实现表定义、索引、标记录操作功能。其中:(1)表定义中列(属性)的类型至少支持三种(integer、char、float); (2 ) 每个表上要求至少建一个主键上的B+树,支持多属性主键; (3)记录的插入、删除、修改等,即时更新相应的索引;(4)记录的搜索至少实现按主键查找,只是主键上的范围查找,包含遍历。2)结构清晰(1)用户模块和内核模块完全分开。(2)内核部分B+ 、Record、Catalog三个模块之间坚决不能互相调用方法和函数。(3)内核部分B+ 、Record、Catalog三个模块不能访问物理文件,而由Buffer模块实现物理文件操作的所有细节。(4)API Lib根据B+ 、Record、Catalog三个模块的方法整合生成 适合用户模块调用的API。 (5) 内核各个模块只向上负责,简化了各个模块之间的调用关系。4. 用户手册:本程序提供了最基本的SQL语句功能,但在某些细节上作了些许修改,但这不影响同等功能的实现.另外,本程序在命令输入中对大小写不敏感,但在数据库的输入中对大小写敏感(如ShowDB命令等价于showdb,但insert into tablename values(a)和insert into tablename valuse(A)是不同的)本程序提供的功能有: 1) 显示所有的数据库-将目前所建立好的所有的数据库显示出来. 比如:(假设系统中存在db1,db2,db3这3个数据库) MiniSQl-showdb;+-+| Database |+-+| db1 | db2 | db3 |+-+3 rows in set! 2) 选择某个数据库-将这以后所有的操作定位到该数据库中,以后各个命令都是针对该选择的数据库进行的.并将该数据库下所有表的表名显示出来 比如:(假设数据库db1中存在book1,book2,book3这3张表) MiniSQl-use db1;+-+| Table in db1 |+-+| book1 | book2 | book3 |+-+3 rows in set! 3) 新建一个数据库-创建一个新的数据库 比如:MiniSQl-new Test;就会创建一个名为Test的数据库,此时,用showdb;显示所有数据库如下:+-+| Database |+-+| db1 | db2 | db3 | db4 |+-+4 rows in set! 4) 删除一个数据库-删除一个已经存在的数据库,系统会检查该数据库是否存在,注意,该数据库中所有的表和索引都将被删除 比如:MiniSQl-dropdb db2; 此时键入showdb;,将显示 +-+| Database |+-+| db1 | db3 | Test |+-+3 rows in set! 5) 新建一张表-应用Create命令在已选定好的数据库中插入一张表,支持多属性主健。 比如:MiniSQl-Create table BookTest(a int ,check(a between 1 and 100),b int primary); 需要说明的是,Create命令几个特点:a)对一个属性的主键限制必须在定义该属性的类型后直接键入Primary,如a int primary即表示a是构成主键的属性;b)对一个属性做出范围限制时,必须在定义该属性后,专门用Check语句给出该属性的范围限制,本程序支持 ,= , 10)即表示a是主键,而且它的值必须在1,7的范围内,b必须大于10. 此时键入showtable;,将显示 +-+| Table in db1 |+-+| book1 | book2 | book3 | BookTest |+-+4 rows in set! c)对于多属性:create table book10(其中(a,b,c,d)为主健 bno char(8),age int,a int primary,b char(49) primary,c float primary,d char(131) primary); 6) 插入一行-应用Insert命令在某张表之中插入一行 不过,Insert命令中不允许只对某些字段赋值,必须对整行的所有字段同时赋值. 比如:MiniSQl-Insert into BookTest values(1,1); MiniSQl-Select * from BookTest; 系统将显示:a b1 1 假设插入多次数据后,系统中存在的表内容为:(为了之后说明系统功能方便)MiniSQL-select * from booktest;a b1 11 21 31 434 632 832 1945 2945 324 364 374 3945 9234 98 对于以下各种情况,系统将给出异常信息: 比如:MiniSQl-Insert into BookTest values(-1,1); 原因:Check越界-由于Create表时对a作了Check(a between 1 and 100)的限制,所以此处a = -1越界 比如:MiniSQl-Insert into BookTest values(100,1); 原因:主键重复-由于原先已经存在(由于a是主键)a = 1的行,此时再次插入a = 1的行则出现主键重复出错 7) 选择某些行-应用Select命令在某张表中选择满足特定条件的行 注:对条件的规格作几点说明 a)条件由where关键字引出; b)条件的形式为 ColumnName (等7种限定条件) ColumnLimitValue如where a 7; c)多属性之间可以用and互相连接,程序通过这个特点实现了多属性的查找功能,如先 create table a (you int primary,me int primary); 接下来可以用select * from a where you = 5 and me = 7;来完成多属性的查找; d)另外,在Select,Update,Delete和Insert中各个条件的写法和用途完全相同. e)Select也可以制定显示某一列(select a from booktest显示a列) 下面举例说明(都是测试结果) 比如:MiniSQl-select * from booktest;(效果在前面已经见过了) 系统将显示booktest表中的所有的行. 比如:MiniSQL-select * from booktest where b 7;a b1 11 21 31 434 6 系统将显示booktest表中所有b select * from booktest where b between 8 and 90;a b32 832 1945 2945 324 364 374 39 系统将显示booktest表中所有8=bselect * from booktest where b -1;a bError 1027: No Reocrd! 系统将检查到b select * from booktest where b between -2 and 50;a b1 11 21 31 434 632 832 1945 2945 324 364 374 39MiniSQL-select * from booktest where b between 50 and 200;a b45 9234 98 比如:MiniSQL-select * from booktest where b select * from booktest where b select * from booktest where b = 39;a b4 39MiniSQL-select * from booktest where b != 39;a b1 11 21 31 434 632 832 1945 2945 324 364 3745 9234 98 这两条命令构成一组;将与下面的一组(也是2条命令)作比较.(40不存在b+树中)MiniSQL-select * from booktest where b = 40;a bError 1026: the Key name isnt existed!MiniSQL-select * from booktest where b != 40;a b1 11 21 31 434 632 832 1945 2945 324 364 374 3945 9234 98 以上两组命令虽然在用户看来用法和结果应该是没有任何区别的的,但在B+树的处理之中是要区分对待. 8) 删除某些行-应用Delete命令在某张表中删除满足特定条件的行 比如:MiniSQL-delete from BookTest where b = 39;MiniSQL-select * from booktest;a b1 11 21 31 434 632 832 1945 2945 324 364 374 3945 9234 98 系统将删除b = 39的行. MiniSQL-delete from BookTest where b = 40;Error 1026: the Key name isnt existed! 由于并不存在b = 40的行,所以系统给出错误提示(该主键值不存在). 9) 更新某些行-应用Update命令在某张表中更新满足条件的行 比如: MiniSQL-update booktest set a = 100 where b = 98; MiniSQL-select * from booktest;a b1 11 21 31 434 632 832 1945 2945 324 364 3745 92100 98 对应的多属性主健a)create table book(其中(a,b,c,d)为主健bno char(8),age int,a int primary,b char(49) primary,c float primary,d char(131) primary);b)insert into book values(猪头,1,6,i love you,4.0,are a dog);c) update book set age = 19 where b = abc and a = 7 and c = 4.0 and d = jie;d)update book set age = 20 where a between 3 and 7 and b between iloveyou and iloveyou and c between 4.0 and 4.0 and d between are a dogand are a dog;e) select * from book where a between 3 and 7 and b between i love you and i love you and c between 4.0 and 4.0 and d between are a dogand are a dog;select * from book where a 3 and b = i love you and c = 4.0 and d = are a dog;f) delete from book where a = 7 and b = i love you and c = 4.0 and d = abc; 10) 删除一张表-应用Drop命令来删除给定表名的表 比如:MiniSQl-Drop BookTest; MiniSQl-ShowTable; +-+| Table in db1 |+-+| book1 | book2 | book3 |+-+3 rows in set! 系统将删除BookTest表 11) 获得帮助-应用Help命令来获得该数据库系统的简要帮助信息 比如:MiniSQl-help;.Help Info. 12) 退出数据库-应用Quit或Exit命令来退出数据库系统 比如:MiniSQl-Quit;Thank you for your using MiniSQL!See you! ( 系统显示再见信息,退出. )5. 程序可扩展之处:(因为考试,不
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 建筑地基处理效果评价方法选择原则制定
- SolidWorks减速器设计方法课程设计
- 医疗机构废弃物管理
- 女生青春期生理心理教育课件
- 护理不良事件管理
- 环艺设计板面构成与设计策略
- 儿科小儿支气管肺炎护理要点
- 全国传染病报告管理指南
- 在职4年员工和四大公司
- 家居店空间设计规划方案
- 2025年驻村干部考试题及答案
- 2025届广东省广州市荔湾区真光中学高一物理第二学期期末学业质量监测试题含解析
- 2025年高考真题-生物(四川卷) 含答案
- 2025年山西省中考历史真题(原卷版)
- 检验表4.43 浆砌石、灌砌石挡墙浆砌体单元工程施工质量检验表
- 安全试题100道及答案
- 物业水电工应知应会培训
- 药品儿童用药管理制度
- 水利安全风险防控“六项机制”与安全生产培训
- 25年小升初作文押题+范文
- TCPQSXF006-2023消防水带产品维护更换及售后服务
评论
0/150
提交评论