当前位置:文档之家› 黑大数据库实验报告资料

黑大数据库实验报告资料

黑龙江大学“数据库系统原理课程设计”总结报告学院软件学院年级2014级专业软件工程学号********姓名陆芝浩报告日期2016.11.9成绩黑龙江大学软件学院1、开发环境操作系统:Windows7编程语言环境:VC++6.02、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);③建立非主键上的辅助索引:create index fuzhu student_index on student (name);3.4查询功能(1)功能介绍①实现全关系选择。

②实现单关系选择。

③实现两个关系的连接。

④实现两个关系的连接和选择。

⑤实现单关系投影。

⑥实现单关系选择和投影。

⑦实现两个关系的连接和投影。

⑧实现两个关系的连接,投影和选择。

相关理论查找分为单表查询以及单表索引查询,多表查询是调用了单表查询,然后进行选择,连接以及投影。

全关系查询是将字典文件中该表的所有属性取出,条件过滤是将SQL语句中的条件抽取出来依照字典文件中的表结构进行字段的一次排查将符合条件的留在结果集合中。

不符合条件的从结果集合中删除。

完成之后按照字段进行投影工作,投影同样是依照sql语句以及数据字典进行的。

多表查询,是将sql语句中涉及的表首先行进单表查询,将结果集合分别进行条件过滤,表连接操作最后进行投影工作。

(3)算法描述a.全关系的选择操作扫描数据字典,判断是否有该表,如果有,则扫描数据文件,将文件中内容全部输出。

b.实现单关系的投影操作扫描数据字典,判断是否有该表,若有该表,记录要投影的属性是第几个,扫描数据文件,将每个元组中要查询的属性输出。

c.实现单关系的选择操作(允许多条件)扫描数据字典,判断是否有该表,若有该表,扫描数据文件,利用循环将满足“where”后条件的元组选出。

d.实现单关系的选择投影操作(允许多条件)扫描数据字典,判断是否有该表,若有该表,则记录需要投影的属性是第几个,查找数据文件,利用循环将满足“where”条件的元组找出并属性相应的属性值。

e.实现两个关系的连接操作扫描数据字典,判断是否有这两个表,若有,则查找相关属性,将两个表中的相关属性依据条件进行匹配,若匹配成功,则表示连接成功,输出连接结果。

f.实现两个关系的选择和连接操作在以上的连接结果中挑选符合条件的元组输出。

g.实现两个关系的选择、投影和连接操作在以上的结果中选择要投影的属性,输出。

程序流程图测试用例与实验结果①全关系选择:select * from student;②单关系选择:select * from student where num=1000;③实现两个关系的连接:select * from student,xuanxiu where num=x_num;④实现两个关系的连接和选择:select * from student,xuanxiu where num=x_num and num >1001;⑤单关系投影:select name,sex from student;⑥单关系选择和投影:select name,sex from student where num=1007;⑦两个关系的连接和投影:select num,grade from student,xuanxiu where num=x_num;⑧两个关系的连接,投影和选择:select num,grade from student,xuanxiu where num=x_num and num>1001;3.6数据库保护功能(1)功能介绍要求根据数据字典(DD)实现对数据库的安全性检查。

包括设置口令、密码和权限等。

相关理论掌握数据库系统的安全性保护机制。

(3)算法描述编写一个登陆界面,限制用户名和密码,实现安全性保护机制,添加的用户名和密码都写到了mima.txt文件当中。

(4)程序流程图(5)测试用例与实验结果①原来mima.txt文件中的数据:②添加用户名:root 密码:8833create user ttt identified by 888;加后mima.txt文件中的数据:4、总结通过模拟DBMS的实现,使理论与实践得到融合,更深刻的理解了相关原理及实现。

通过实验的模拟,对关系代数的运算,SQL语句的使用,有了更多的掌握,同时对数据库的理解更深刻,提高了编程能力。

5、参考文献《数据库系统原理》第2版电子工业出版社李建中编著《数据结构—用C语言描述》唐策善清华大学出版社。

相关主题