数据库系统原理
课程设计文档
学号:
姓名:
一、 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操作控制,如普通用户不可以修改用户权
限等。
(三) 系统总体结构图如下:
数据库优化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;
自然连接运算:Table1 & Table2;
等值连接运算:Table1 & Table2 where Table1.propertite = Table2.propertite;
关系演算功能模拟:在含有exists的SQL语句中,采用如下算法:
在SQL(select * from topic where exists(select * from user where topicowner = username);)语句通过编译后执行时, 若没有索引文件的情况,则采用逐条语句判断,假如取出的元组记录满足exists后的条件时, 则将关系元组进行存储,若存在索引文件, 则可以按照索引文件进行条件的匹配(从外向内的匹配)。满足条件则进行元组信息保存,否则跳过继续查;
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论