数据库系统原理课程设计总结报告

上传人:bin****86 文档编号:55171860 上传时间:2018-09-25 格式:DOC 页数:48 大小:1.29MB
返回 下载 相关 举报
数据库系统原理课程设计总结报告_第1页
第1页 / 共48页
数据库系统原理课程设计总结报告_第2页
第2页 / 共48页
数据库系统原理课程设计总结报告_第3页
第3页 / 共48页
数据库系统原理课程设计总结报告_第4页
第4页 / 共48页
数据库系统原理课程设计总结报告_第5页
第5页 / 共48页
点击查看更多>>
资源描述

《数据库系统原理课程设计总结报告》由会员分享,可在线阅读,更多相关《数据库系统原理课程设计总结报告(48页珍藏版)》请在金锄头文库上搜索。

1、黑龙江大学黑龙江大学“数据库系统原理课程设计数据库系统原理课程设计”总结报告总结报告学院学院软件学院软件学院年级年级2011 级级专业专业软件工程软件工程学号学号20113311姓名姓名杜常数杜常数报告日期报告日期2013/12/21成绩成绩黑龙江大学计算机科学技术学院黑龙江大学软件学院数据库系统原理课程设计 20113311 杜常数21 1、 开发环境开发环境硬件环境:Windows XP/Win7 操作系统 软件环境:Microsoft Visual Studio 20052 2、 DBMSDBMS 系统架构系统架构如图 2-1 所示,通过该类图可以大致看到所有的类的属性、行为以及各 个类

2、相互之间的关系。图 2-1 DBMS 静态类图 在运行本系统时,会先通过Ganalysis的构造方法对系统进行初始化,包括载入 文法和文法的分析表。载入成功后用户输入SQL语句时main函数会调用int Ganalysis:analysis_sql(char sql)对输入的 语句进行处理,如果文法分 析不通过时返回一个正数(错误出现的位置) ,main函数则会调用void Ganalysis:showError();来显示语法错误。如果语法分析成功,analysis返回 OK(-2), Ganalysis会调用相应的模块来具体执行SQL语句。此时不管具体执行 结果如何,都会返回OK,在主函数

3、中再调用void Ganalysis:showExecuteResult ();来显示执行的结果。 如下图2-2为该系统语法分析失败时的序列图,图2-3为系统语法分析成功时的 序列图:数据库系统原理课程设计 20113311 杜常数3图2-2语法分析失败序列图图2-3 语法分析成功时的系统序列图3 3、DBMSDBMS 主要功能模块主要功能模块本 DBMS 主要包含 6 个模块,分别是 SQL 语言的词法和语法分析功能模块、创建 数据库及数据操作功能模块、索引的创建及删除模块、查询功能模块、查询优 化模块、数据库保护功能模块。在以下的各小节中将会详细介绍。3.13.1 SQLSQL 语言的词法

4、和语法分析语言的词法和语法分析(1 1)功能介绍)功能介绍该部分利用已有的编译知识,完成 SQL 语句的词法和语法分析工作,对用 户输入的 SQL 语句进行检验是否正确。如果输入正确则进一步做处理,否则指数据库系统原理课程设计 20113311 杜常数4出错误的位置。进一步了解 DBMS 中数据字典的作用,并为后续的查询处理和 优化实验打好基础。 主要包括的词法语法分析语句包括:(1)create table(8)create index(2)drop table(9)drop index(3)alter table(10)create view(4)insert(11)drop view(5

5、)delete(12)create user(6)update(13)grant(7)select(14)revoke(2 2)相关理论)相关理论首先使用词法分析将语句中各个单词分离出来,包括关键字、标识符、整数、运算符、界符等;第二步使用语法分析器判别语句中的语法错误,即不同中来的单词搭配错误;第三步使用语义分析,校对语义错误。SLR 语法分析器由输入、输出、栈、驱动程序及包含动作(action)和转移(goto)两部分的语法分析表构成的。驱动程序对所有的 SLR 语法分析器都是一样的,不同的语法分析器只是语法分析表有所不同。分析程序每次从输入缓冲区读入一个符号,并使用栈来存储形如 s0X1

6、s1X2s2Xmsm的串。其中 sm在栈顶,Xi 是文法符号,Si 是称为状态的符号,每个状态符号概括了栈中位于它的下面的信息。栈顶的状态符号和当前的输入符号用来检索语法分析表,以决定移动规约分析的动作。在实际实现中,文法符号不必出现在栈里。SLR1 语法分析的模型如图 3.1-1 所示:数据库系统原理课程设计 20113311 杜常数5图 3.1-1(3 3)算法描述)算法描述首先需要对输入的字符串进行词法分析,先通过函数 void strChange(string str,vector 函数对字符串进行分割,将 str 中的单词、操作符 等分成一个一个的 string 类型的字符串,并保持

7、在 vecStr 中。具体的实现算 法如下所示: void strChange(string str,vector i=“,“0)/移进 状态栈中入栈num; 符号栈中入栈stri+; else if(numleft,num) 返回错误位置为i-1个单词 将num压入状态栈,将第num个产生式的左部压入符号栈。 else if(num=0) 分析成功,返回OK if(i=str.size() 返回出错位置为 i-1 个单词(4 4)程序流程图)程序流程图对字符串分割的函数流程图如下图 3.1-2 所示:数据库系统原理课程设计 20113311 杜常数7开始i=0;i=,!=,0?状态栈中入栈n

8、um;符 号栈中入栈stri+; stri+;num=0?分析成功,返回 OK 结束N数据库系统原理课程设计 20113311 杜常数9(5 5)测试用例与实验结果)测试用例与实验结果 测试用例:3.1-1:create table stu(id int,name char(20),score int);测试用例 3.1-2:select name,age,address from user;测试用例 3.1-3:alerttt table stu add id int;测试用例 3.1-4:update stu set a=abcd where a;3.23.2 创建数据库及数据操作功能创建

9、数据库及数据操作功能(1 1)功能介绍)功能介绍1、实现建立数据库表结构的功能。该部分还包括以下几个功能:(1)支持整型int、字符型char、变长字符型varchar数据。(2)以文件形式保存基本表。(3)具有相应的数据字典存储表名、表的结构等相关信息。2、实现输入数据库记录的功能,可以通过SQL insert语句向已有的表中插入数据库记录。当表不存在时会提示输入错误。数据库系统原理课程设计 20113311 杜常数103、实现删除数据库记录的功能,通过delete语句删除某一条或者符合某一条件的记录。同时会显示删除的记录个数。4、实现修改数据库记录的功能,该部分通过update语句可以修改

10、符合某一条件的记录。同时会显示所修改的记录个数。5、实现显示数据库结构和内容的功能。6、实现在已有的关系中添加属性的功能,利用alert命令可以添加一个表的属性。表不存在时会有错误提示。7、实现从已有的关系中删除属性的功能利用alert命令可以添加一个表的属性。表不存在时会有错误提示,当表只剩余一列时不允许再删除该属性可以通过drop语句删除表。8、实现删除表的功能,使用drop命令删除表,当表不存在时会提示表不存在的错误信息。(2 2)相关理论)相关理论1、文件和文件记录 数据通常都是以记录的形式存储在磁盘上。记录由一组相关的数据值或数 据项排列而成。每个数据项对应于记录的一个域,由一个或几

11、个字节组成。记 录的每个域具有一个名字和一个数据类型,如整数、字符串等。一组域名字及 其对应的数据类型构成了记录型或记录格式。文件是一个记录序列。一个文件 的所有记录都具有相同的记录型。如果一个文件的所有记录都具有相同的长度, 这个文件被称为定长记录文件。如果一个文件中的不同记录可能具有不同的长 度,则称这个文件为变长记录文件。以下是磁盘上存储文件的方法和特点。 连续存储方法:按照文件中文件块的顺序把文件存储到连续磁盘块上。存 取整个文件的效率高。文件扩充困难。 链接存储方法:在每个文件块中增加一个指向下一个文件块所在的磁盘块 的地址指针。便于文件扩充。读整个文件的速度很慢。 索引存储方法:在

12、磁盘上存储一个或多个索引块。每个索引块包含指向文 件块的指针。 每个数据库管理系统都包含一个称为数据字典的小型数据库。 2、数据字典 数据字典用来存储数据库中数据对象的描述信息和数据库管理系统需要的 控制信息。数据对象的描述信息包括概念模式、内模式、外模式以及它们之间 的映象的描述。数据库管理系统需要的控制信息包括查询优化、安全性检查、 用户权限验证、事务处理、报告生成、约束验证、数据定义和操纵语言编译等 系统程序模块所需要的信息。 3、堆文件的查找操作 查找一个满足给定条件的记录:必须从文件的第一个记录开始搜索,直到 发现满足条件的记录为止。如果满足条件的记录不止一个,需要搜索整个文件。数据

13、库系统原理课程设计 20113311 杜常数114、堆文件的插入操作 堆文件的头存储它的最末一个磁盘块的地址。插入一个记录时,首先,读 文件头,找到最末磁盘块地址,把最末磁盘块读入主存储器缓冲区;然后,在 缓冲区内把新记录存储到最末磁盘块的末尾;最后,把缓冲区中修改过的最末 磁盘块写回原文件。 5、堆文件的删除操作 第一种方法:首先找到被删除记录所在的磁盘块;然后读到主存缓冲区, 在缓冲区中删除记录;最后把缓冲区内容写回磁盘文件。这种方法将使文件中 出现空闲的存储空间,需要周期地整理存储空间,避免存储空间的浪费。 第二种方法:在每个记录的存储空间增加一个删除标志位。当删除一个记 录时,把删除标

14、志位置 1。查找记录时跳过删除位置为 1 的记录。这种方法也 需要周期地整理存储空间。 第三种方法:当删除一个记录时,把文件末尾记录移动到被删除记录的位 置。避免了存储空间的整理。只适用于定长记录文件。 6、堆文件的修改操作 定长记录文件:找到记录所在磁盘块,读入主存缓冲区,在缓冲区中修改 记录,并写回磁盘。 变长记录文件:先删除后插入。(3 3)算法描述)算法描述1、创建表的功能创建表的功能由 Create 类的函数 int Create:create_table(char sql); 来实现。其中传入的参数 sql 为形如“create table table_name (id1 类型 1

15、,id2 类型 2 idn 类型 n)” 其具体的算法描述如下所示: int Create:create_table(char sql) char tname100; 从sql语句中提取表名table_name,存储在table_name中. if(isExistTable(table_name) 提示表已经存在。 return ERROR; 向数据字典中追加table_name的表名table_name以及表的结构。 创建文件“database/“+table_name+“.txt“. return OK; 2、插入记录的功能插入记录的功能由 Insert 类里的 int Insert:in

16、sertRecord(char sql); 函数来实现。传入的 sql 语句参数形如“insert into table_name (id1,id2 idn) values(value1, value2valuen);”或者形如“insert into table_name values(value1, value2valuen);”具体的算法如下所描述:数据库系统原理课程设计 20113311 杜常数12int Insert:insertRecord(char sql) if(获取表结构失败) return ERROR;if(sql3!=“(“)/insert into table_name values(.); 对表的结构做检验,如果插入结构不正确,则返回并提示结构不匹配。向表中追加一条记录。 else/insert into

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 工作范文

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号