黑大数据库实验报告资料
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
黑龙江大学
“数据库系统原理课程设计”总结报告
学院软件学院
年级2014级
专业软件工程
学号********
姓名陆芝浩
报告日期2016.11.9
成绩
黑龙江大学软件学院
1、开发环境
操作系统:Windows7
编程语言环境:VC++6.0
2、DBMS系统架构
3、DBMS主要功能模块
1、实现SQL语句中的Create Table建表语句,建立相应的数据库表,并生成相应的数据字典文件和数据文件。
2、实现alter table表模式的修改功能:
①能够为已建立的表添加属性。
②能够从已建立的表中删除属性。
3、实现drop table删除表功能。
4、实现create index创建索引的功能。
5、实现drop index删除索引的功能。
6、实现insert可以向已经创建的表插入元组。
7、实现delete从已经创建的表中删除元组。
8、实现update修改表中的数据。
9、实现SELECT语句,包括:
实现单表全属性查询。
实现单表单属性查询。
实现多表的连接全属性查询。
实现多表的连接和选择条件的全属性查询。
实现多表的连接的单属性查询。
实现多表的连接和选择的单属性查询。
实现单表的选择的单属性查询。
实现单表的选择的全属性查询。
10、利用启发式关系代数优化算法进行查询优化。
11、建立访问权限,根据数据字典(DD)实现对数据库的安全性检查和完整性约束的机制。
3.1 SQL语言的词法和语法分析
(1)功能介绍
通过编译原理的知识对输入的SQL语句进行词法分析,将SQL语句拆分为若干个单词,对其进行语法分析,确定输入的SQL语句的含义.
(2)相关理论
利用编译原理的相关知识,对输入的SQL语句进行模仿SQL语言的词法及语法结构的分析。
(3)算法描述
在调用的每个相关模块的的起始部分,对该条SQL语句进行拆分,对每一个关键字位置进行比对处理,如有词法或语法错误,立即停止此次调用模块操作,并报错,重新输入SQL语句。
(4)程序流程图
(5)测试用例与实验结果
词法语法分析在各功能中体现。
3.2创建数据库及数据操作功能
功能介绍
1、实现建立数据库表的结构的功能。
(1)支持整型、字符型数据。
(2)以文件形式保存基本表。
(3)建立相应的数据字典。
2、实现输入数据库表记录的功能。
3、实现删除数据库表记录的功能。
4、实现修改数据库表记录的功能。
5、实现显示数据库表结构和内容.
6、实现在已有的表中添加属性的功能;
7、实现从已有的表中删除属性的功能;
8、实现删除表的功能。
(2)相关理论
主要是对文件操作,读文件、写文件及文件指针的运用。
(3)算法描述
创建表:
读取由词法分析产生的文件,根据相应的关键字判断应该进行何种操作,建表前应先判断该表是否存在,若不存在,将该表的信息及各个属性的信息写入文件。生成相应的数据字典和
数据文件。
程序流程图:
删除表:
1.根据要删除的表名,查找该表是否存在。
2.该表若存在,则将调用remove函数删除该表,并将与该表有关的信息及文件删除。程序流程图:
增加属性:
1.对要进行操作的表判断是否存在;
2.判断要加入的属性在表中是否已存在,若不存在则将要加入的属性加入到该表中,相应文件同时进行更新。
程序流程图:
删除属性:
1.判断该表是否存在;
2.断该表中是否存在该属性,若存在,则将该属性删除,并更新相应文件的信息;程序流程图:
插入数据:
1.判断表是否存在
2.判断表中是否存在主键,若存在主键,则判断插入数据的主键是否与已有数据的主键重复。若该表不存在主键,则直接插入数据,并且更新
程序流程图:
删除记录:
1.表是否存在
2.判断欲删除数据是否存在
3.根据判断条件进行删除
4.更新相关文件
程序流程图
(5)测试用例与实验结果
①建表和修改表的结构
②添加主键和插入数据
③删除记录
④修改记录
⑤删除表
3.3索引的创建及删除
(1)功能介绍
1.在主键上建立主索引。
2.在主键上建立辅助索引。
3.在非主键上建立辅助索引。
4.删除索引。
(2)相关理论
对主键建立索引,利用二分查找法和顺序查找法,二分查找法可缩短查询时间,构造一个索引文件,查询时只要对索引文件进行查询即可,缩短了处理时间。
(3)算法描述
1.若是创建主索引,首先从表中找到主键;
2.然后利用冒泡排序对数据进行从小到大排序;
3.建立主索引中,1条索引记录每个磁盘块中存放5个元组。
4辅助索引每条索引记录都对应一个元组,辅助索引可以是无序文件,最后将其写入索引文件中。
程序流程图
测试用例与实验结果
立主索引:
create index main student_index on student (num);
②建立主键上的辅助索引:
create index fuzhu student_index on student (num);