数据库管理系统(DBMS)课程设计

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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;

相关文档
最新文档