数据库管理系统(DBMS)课程设计
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数据库系统原理课程设计文档
学号:
姓名:
一、DBMS的实现方式
(一)文件存储的设计思想如下:
本数据库管理系统(DBMS)主要有一下文件:
database.ini:用于存储本数据库管理系统(DBMS)的关系数据库、数据库表信息;
[tablename].ini:以关系数据库表名(tablename)命名的.ini文件主要用于存储数据库表的配置信息,如完整性约束,关系表属性名、属性类型、主
键等信息;
[Tablename]_info.ini:以关系数据库表名(tablename)命名的_info.ini文件主要用于存储数据库表的数据信息(Data information),所有的数据库表
数据信息全部存储在此类文件中;
[Tablename]_index.ini:以关系数据库表名(tablename)命名的_index.ini文件主要用于存储数据库表的索引文件。
此数据库管理系统(DBMS)中,除数据文件_info.ini、索引文件_ index.ini 外其余的均采用节点名、键名、键值之间的对应关系存储本DBMS系统
的关系数据库、数据库表信息和数据库表的配置信息;
数据文件的存储,数据文件采用流式文件,字段之间采用Tab间隔开,
从左到右根据数据库表的配置信息依次存储关系表数据;在最前端设置
一删除标志,为0表示次元组已经被删除,为1表示次元组未被删除;
索引文件的建立采用稠密索引方式,每条记录对应于一条索引记录,在
索引文件中存放了每条数据元组在数据文件中具体的位置。这样,由于
索引文件较数据文件小很多,故大大加快了数据元组查询速度;
图1:文件存储的设计思想
(二)DBMS系统流程控制设计思想如下:
鉴于此数据库管理系统(DBMS)采用SQL执行,故设计如下程序控制流程:
(1)超级管理员、一般管理员、普通用户通过各自的用户名、密码口令登陆系统;
(2)对SQL进行编译,本DBMS中采用CCompiler类进行编译,编译过程当中可以对要执行的SQL操作进行信息收集并保存在相应的数据结构
(或类)当中。假如编译通过,则可以继续后续SQL语句的执行,否则
提示错误,并不终止后续SQL语句的执行;
注:用户每次的SQL操作均存储在初始目录下的Sql.log日志文件中。
(3)程序编译通过后,操作执行时,首先根据收集而来的SQL语句信息,执行相应的命令操作函数,如建库、建表,查询等;若执行成功这提示信
息,否则数据库管理系统(DBMS)报错!
在权限控制方面,根据用户权限进行相应的SQL操作控制,如普通用户
不可以修改用户权限等。
(三) 系统总体结构图如下:
图2: 系统总体结构图
二、DBMS的功能介绍
本数据库管理系统(DBMS)主要有如下功能:
1、创建关系数据库、关系数据库表;
2、对关系数据库表的插入、删除、查询;
3、对某确定数据库中表的相容关系进行关系代数的集合运算(交并差);
4、对某确定数据库中表的进行关系代数的专门运算(投影、选择、连接);
5、对某确定数据库中表进行关系演算(exists语句的实现);
6、对数据库表的查询优化;
7、DBMS系统用户密码、权限的管理。
三、DBMS算法实现
算法描述及其流程图如下:
插入(insert):对于每次执行的一条元组插入操作,对其根据数据库表的配置选项,组织从编译过程中保存的信息。进行数据保存;同时设置删除项用于标示元组是否已经被删除;
删除(delete):对关系数据库表进行删除操作,采用元组累计法进行。在每次删除操作结束的时,判断数据库表中共有多少条记录已经被删除(此删除数据信息保存在数据库表的配置信息文件中),当超过删除记录达到2000条时,更新相应数据库表的数据文件,同时在有索引文件的情况下得更新数据库的索引文件;
查询(select):对关系数据库表进行查询操作,采用索引判断法。比如,在索引文件已经建立的情况下,则优先考虑索引文件查询数据库表相应的元组,否则顺序查找数据文件搜索满足查询条件的元组;
建立索引(index):本数据库管理系统(DBMS)主要是在主键上建立索引文件,索引文件的建立采用稠密索引方式,每条记录对应于一条索引记录,在索引文件中存放了每条数据元组在数据文件中具体的位置。这样,由于索引文件较数据文件小很多,故大大加快了数据元组查询速度。
注:关系代数语言的集合运算及专门运算均封装在CRelation类中交并差集合运算:此类运算在建立索引的情况下,采用相应的算法进行相容关系数据库表的“交并差”集合运算。具体的实现算法见程序或相应的实验文档(算法,略)。
程序的自定义集合运算SQL如下:
交运算:Table1 and Table2;
并运算:Table1 or Table2;
交运算:Table1 minus Table2;
投影选择连接专门运算:此类运算鉴于大多是对非主键的运算操作,故在本数据库管理系统(DBMS)当中不采用索引方式进行,而是直接对数据库表的数据文件进行运算操作。采用相应的算法进行相应关系数据库表的“投影选择连接”专门运算。具体的实现算法见程序或相应的实验文档(算法,略)。
程序的自定义专门运算SQL如下:
投影运算:如:select Sno,Sname,Sage from Stu1;
选择运算:如:select Sno,Sname,Sage,Ssex from Stu1 where Sno != 1006;