黑大数据库实验报告资料.docx
《黑大数据库实验报告资料.docx》由会员分享,可在线阅读,更多相关《黑大数据库实验报告资料.docx(22页珍藏版)》请在冰豆网上搜索。
黑大数据库实验报告资料
黑龙江大学
“数据库系统原理课程设计”总结报告
学院软件学院
2014级年级
软件工程专业
学号20143983
陆芝浩姓名
报告日期2016.11.9
成绩
黑龙江大学软件学院.
1、开发环境
操作系统:
Windows7
编程语言环境:
VC++6.0
2、DBMS系统架构
3、DBMS主要功能模块
1、实现SQL语句中的CreateTable建表语句,建立相应的数据库表,并生成相应的数据字典文件和数据文件。
2、实现altertable表模式的修改功能:
①能够为已建立的表添加属性。
②能够从已建立的表中删除属性。
.
3、实现droptable删除表功能。
4、实现createindex创建索引的功能。
5、实现dropindex删除索引的功能。
6、实现insert可以向已经创建的表插入元组。
7、实现delete从已经创建的表中删除元组。
8、实现update修改表中的数据。
9、实现SELECT语句,包括:
实现单表全属性查询。
实现单表单属性查询。
实现多表的连接全属性查询。
实现多表的连接和选择条件的全属性查询。
实现多表的连接的单属性查询。
实现多表的连接和选择的单属性查询。
实现单表的选择的单属性查询。
实现单表的选择的全属性查询。
10、利用启发式关系代数优化算法进行查询优化。
11、建立访问权限,根据数据字典(DD)实现对数据库的安全性检查和完整性约束的机制。
3.1SQL语言的词法和语法分析
(1)功能介绍
通过编译原理的知识对输入的SQL语句进行词法分析,将SQL语句拆分为若干个单词,对其进行语法分析,确定输入的SQL语句的含义.
(2)相关理论
利用编译原理的相关知识,对输入的SQL语句进行模仿SQL语言的词法及语法结构的分析。
.
(3)算法描述
在调用的每个相关模块的的起始部分,对该条SQL语句进行拆分,对每一个关键字位置进行比对处理,如有词法或语法错误,立即停止此次调用模块操作,并报错,重新输入SQL语句。
(4)程序流程图
开SQ语字符扫词法分关键字报语法分SQ语正命令执打印结继续输入SQL语句?
N结束
(5)测试用例与实验结果
词法语法分析在各功能中体现。
3.2创建数据库及数据操作功能
功能介绍
1、实现建立数据库表的结构的功能。
(1)支持整型、字符型数据。
(2)以文件形式保存基本表。
(3)建立相应的数据字典。
2、实现输入数据库表记录的功能。
3、实现删除数据库表记录的功能。
4、实现修改数据库表记录的功能。
5、实现显示数据库表结构和内容.
6、实现在已有的表中添加属性的功能;
7、实现从已有的表中删除属性的功能;
8、实现删除表的功能。
(2)相关理论
主要是对文件操作,读文件、写文件及文件指针的运用。
(3)算法描述
创建表:
读取由词法分析产生的文件,根据相应的关键字判断应该进行何种操作,建表前应先判断该生成相应的数据字典和将该表的信息及各个属性的信息写入文件。
若不存在,表是否存在,
数据文件。
程序流程图:
开输SQ语词法分关键字语法分语法SQ执报表存创建创建相表文件完成
删除表:
1.根据要删除的表名,查找该表是否存在。
2.该表若存在,则将调用remove函数删除该表,并将与该表有关的信息及文件删除。
程序流程图:
开输SQ语词法分关键字语法分语法SQ执结表不存表存删除表删除相应表文件完成
增加属性:
对要进行操作的表判断是否存在;1.
2.判断要加入的属性在表中是否已存在,若不存在则将要加入的属性加入到该表中,相应文件同时进行更新。
程序流程图:
开输SQ语词法分关键字语法分语法SQ执表存表不存结添加属性属性存添加属性更新相应表文件完成
删除属性:
1.判断该表是否存在;
2.断该表中是否存在该属性,若存在,则将该属性删除,并更新相应文件的信息;
程序流程图:
开输SQ语词法分关键字语法分语法SQ执表存表不存结删除属性属性不存删除属性更新相应表文件完成
插入数据:
1.判断表是否存在
2.判断表中是否存在主键,若存在主键,则判断插入数据的主键是否与已有数据的主键重复。
若该表不存在主键,则直接插入数据,并且更新
程序流程图:
开输SQ语词法分关键字语法分语法SQ执结主键重表存结表不存插入失主键插入数表有主在N更新相应插入数据表文件完成.
删除记录:
1.表是否存在
2.判断欲删除数据是否存在
3.根据判断条件进行删除
4.更新相关文件
程序流程图
开始输入SQL语句NN完成更新相应表文件结束N数据是否存插入数据NY
词法分析关键字正确
?
Y
语法分析语法正确Y执行表存在Y
?
SQL?
表不存在
数据不存在
在.
(5)测试用例与实验结果
①建表和修改表的结构
②添加主键和插入数据
③删除记录
④修改记录
⑤删除表
3.3索引的创建及删除
(1)功能介绍
1.在主键上建立主索引。
2.在主键上建立辅助索引。
3.在非主键上建立辅助索引。
4.删除索引。
(2)相关理论
对主键建立索引,利用二分查找法和顺序查找法,二分查找法可缩短查询时间,构造一个索引文件,查询时只要对索引文件进行查询即可,缩短了处理时间。
(3)算法描述
1.若是创建主索引,首先从表中找到主键;
2.然后利用冒泡排序对数据进行从小到大排序;
3.建立主索引中,1条索引记录每个磁盘块中存放5个元组。
4辅助索引每条索引记录都对应一个元组,辅助索引可以是无序文件,最后将其写入索引文件中。
程序流程图
开始
输入
SQL
语句
词法分析
N
关键字正确?
NY语法分析语法正?
确YSQL执行结束表存在?
N表不存在结束该属性是非主属性,建主键失败Y对每个元组该属性建立主索该属性是主YN属性?
引?
建立辅助索引Y对排序完成的数对表中文件以主完成属性进行排序据建立主索引
测试用例与实验结果
立主索引:
createindexmainstudent_indexonstudent(num);
②建立主键上的辅助索引:
createindexfuzhustudent_indexonstudent(num);
③建立非主键上的辅助索引:
createindexfuzhustudent_indexonstudent(name);
3.4查询功能
(1)功能介绍
①实现全关系选择。
②实现单关系选择。
③实现两个关系的连接。
④实现两个关系的连接和选择。
⑤实现单关系投影。
⑥实现单关系选择和投影。
⑦实现两个关系的连接和投影。
⑧实现两个关系的连接,投影和选择。
相关理论
查找分为单表查询以及单表索引查询,多表查询是调用了单表查询,然后进行选择,连接以及投影。
全关系查询是将字典文件中该表的所有属性取出,条件过滤是将SQL语句中的条件抽取出来依照字典文件中的表结构进行字段的一次排查将符合条件的留在结果集合中。
不符合条件的从结果集合中删除。
完成之后按照字段进行投影工作,投影同样是依照sql语句以及数据字典进行的。
多表查询,是将sql语句中涉及的表首先行进单表查询,将结果集合分别进行条件过滤,表连接操作最后进行投影工作。
(3)算法描述
a.全关系的选择操作
扫描数据字典,判断是否有该表,如果有,则扫描数据文件,将文件中内容全部输出。
b.实现单关系的投影操作
扫描数据字典,判断是否有该表,若有该表,记录要投影的属性是第几个,扫描数据文件,将每个元组中要查询的属性输出。
c.实现单关系的选择操作(允许多条件)
扫描数据字典,判断是否有该表,若有该表,扫描数据文件,利用循环将满足“where”后条件的元组选出。
d.实现单关系的选择投影操作(允许多条件)
扫描数据字典,判断是否有该表,若有该表,则记录需要投影的属性是第几个,查找数据文件,利用循环将满足“where”条件的元组找出并属性相应的属性值。
e.实现两个关系的连接操作
扫描数据字典,判断是否有这两个表,若有,则查找相关属性,将两个表中的相关属性依据条件进行匹配,若匹配成功,则表示连接成功,输出连接结果。
f.实现两个关系的选择和连接操作
在以上的连接结果中挑选符合条件的元组输出。
g.实现两个关系的选择、投影和连接操作
在以上的结果中选择要投影的属性,输出。
程序流程图
NN连接查询NNY有选择条件Y连接条件满足
全属性查询?
?