数据库管理系统DBMS课程设计.docx

上传人:b****5 文档编号:2787438 上传时间:2022-11-15 格式:DOCX 页数:22 大小:397.68KB
下载 相关 举报
数据库管理系统DBMS课程设计.docx_第1页
第1页 / 共22页
数据库管理系统DBMS课程设计.docx_第2页
第2页 / 共22页
数据库管理系统DBMS课程设计.docx_第3页
第3页 / 共22页
数据库管理系统DBMS课程设计.docx_第4页
第4页 / 共22页
数据库管理系统DBMS课程设计.docx_第5页
第5页 / 共22页
点击查看更多>>
下载资源
资源描述

数据库管理系统DBMS课程设计.docx

《数据库管理系统DBMS课程设计.docx》由会员分享,可在线阅读,更多相关《数据库管理系统DBMS课程设计.docx(22页珍藏版)》请在冰豆网上搜索。

数据库管理系统DBMS课程设计.docx

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

数据库系统原理

课程设计文档

学号:

姓名:

一、DBMS的实现方式

(一)文件存储的设计思想如下:

本数据库管理系统(DBMS)主要有一下文件:

database.ini:

用于存储本数据库管理系统(DBMS)的关系数据库、数据

库表信息;

[tablename].ini:

以关系数据库表名(tablename)命名的.ini文件主要用于存储数据库表的配置信息,如完整性约束,关系表属性名、属性类型、主

键等信息;

[Tablename]_info.ini:

以关系数据库表名(tablename)命名的_info.ini文件

主要用于存储数据库表的数据信息(Datainformation),所有的数据库表

数据信息全部存储在此类文件中;

[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如下:

交运算:

Table1andTable2;

并运算:

Table1orTable2;

交运算:

Table1minusTable2;

投影选择连接专门运算:

此类运算鉴于大多是对非主键的运算操作,故在本数据库管理系统(DBMS)当中不采用索引方式进行,而是直接对数据库表的数据文件进行运算操作。

采用相应的算法进行相应关系数据库表的“投影选择连接”专门运算。

具体的实现算法见程序或相应的实验文档(算法,略)。

程序的自定义专门运算SQL如下:

投影运算:

如:

selectSno,Sname,SagefromStu1;

选择运算:

如:

selectSno,Sname,Sage,SsexfromStu1whereSno!

=1006;

自然连接运算:

Table1&Table2;

等值连接运算:

Table1&Table2whereTable1.propertite=Table2.propertite;

关系演算功能模拟:

在含有exists的SQL语句中,采用如下算法:

在SQL(select*fromtopicwhereexists(select*fromuserwheretopicowner=username);)语句通过编译后执行时,若没有索引文件的情况,则采用逐条语句判断,假如取出的元组记录满足exists后的条件时,则将关系元组进行存储,若存在索引文件,则可以按照索引文件进行条件的匹配(从外向内的匹配)。

满足条件则进行元组信息保存,否则跳过继续查找;

若SQL语句为(select*fromtopicwherein(select*fromuserwheretopicowner=username);则匹配条件为从内向外,再选出的结果集中,判断从topic表选出的记录元组,若满足结果集,则进行保存。

否则继续查询数据文件…在匹配条件的结果集较大时,应当将结果集写出外存,以备后续数据元组的查询匹配。

查询优化(Optimize):

在SQL语句编译通过的情况下,从收集到的SQL信息中进行数据的组织,启发式代数优化算法设计思想如下:

 

(1)、数据结构的定义

查询优化树(三叉树)节点定义:

structnode

{

structnode*up;//指向上一节点

structnode*left;//指向下左节点

structnode*right;//指向下右节点

structnode*mid;//指向下中节点

CStringopt_sql;//优化过程中使用的优化SQL语句

CStringcreate_sql;//优化过程中使用的创建节点SQL语句

};

查询优化用到的属性:

structproperties

{

chartable[25];//优化属性所在的关系数据库表名

charproper[50];//优化属性名称

};

查询优化用到的投影操作:

structprojection

{

chartable[25];//需要执行投影操作的关系数据库表名

charproper[50][50];//投影操作的投影属性列表

};

查询优化用到的选择操作

structchoose

{

chartable[25];//选择操作的关系数据库表名

charproper[50];//选择操作的关系数据库属性名

charvalue[50];//选择操作的关系数据库属性值

};

查询优化用到的连接操作:

structconnection

{

chartable1[25];//连接操作的关系数据库表名

chartable2[25];//连接操作的关系数据库表名

chartable1_proper[50];//连接操作的关系数据库属性名

chartable2_proper[50];//连接操作的关系数据库属性名

};

(2)、优化过程:

根据初始的SQL通过相应的算法建立初始树结构:

以SQL(selectStudent.sname,C.cname,C.cteacherfromStudent,SC,CwhereStudent.sno=SC.snoandSC.cno=C.cnoandStudent.ssex=female;)为例做如下说明:

初始查询优化树为:

图3:

初始查询优化树

经优化后的查询优化树为:

图4:

经优化后的查询优化树

(3)、优化过程中中间结果的保存:

根据经优化后的查询优化树,自底向上的进行优化树节点搜索,并按照节点内保存的create_sql和opt_sql进行查询优化(create_sql和opt_sql在生成最终优化树是已经设置完毕)。

同时每经过一个节点均保存一次中间结果,以备后续节点(上层节点)进行优化时使用。

最后到达根节点时保存查询优化的结果信息。

(注:

具体的中间结果见程序执行后的节点文件)

保护功能模拟:

用户权限的控制,本数据库管理系统(DBMS)用户分为三个等级,分别是:

超级管理员,一般管理员,普通用户。

其中,各用户角色相应的使用数据库管理系统(DBMS)权限为如下:

超级管理员:

可以修改任何用户的密码、权限等;但是不可以修改自己的权限;可以对表做出任何操作;包括关系数据库、关系数据表的创建,对数据库表的增、删、查、关系代数的集合运算、专门运算等所有等操作,同时还可以使用优化查询技术及用户管理;

一般管理员:

只能对数据表进行增、删、查,可以使用索引技术(创建索引文件)但是不可以进行关系代数的集合运算、专门运算和使用优化查询技术;

普通用户:

具有最低权限,只能对数据表的查询,不可以创建关系数据库、关系数据库表,而且不能使用索引技术及优化查询技术。

四、实验测试用例与结果

实验用例与结果如下:

图5:

建库命令

图6:

插入命令

 

以下是对系统中存储有十万条记录的数据库表(Course)进行查询:

Course数据库表(部分数据信息)如下:

(测试用例)

151200437932006周泽学计算机科学技术学院计算机科学与技术262

152200524442006杨毅计算机科学技术学院计算机科学与技术512

153200607662006史海亮计算机科学技术学院计算机科学与技术335

154200607692006周贵宾计算机科学技术学院计算机科学与技术560

155200611832006董超计算机科学技术学院计算机科学与技术580

156200611882006魏立申计算机科学技术学院计算机科学与技术158

157200611892006朱晓东计算机科学技术学院计算机科学与技术

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > PPT模板 > 其它模板

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1