DBMS实验报告模板Word格式文档下载.doc
《DBMS实验报告模板Word格式文档下载.doc》由会员分享,可在线阅读,更多相关《DBMS实验报告模板Word格式文档下载.doc(16页珍藏版)》请在冰豆网上搜索。
1.项目概况
1.1基本目标
DBMS的设计与实现:
设计并实现一个DBMS原型系统,可以接受基本的SQL语句,对其进行词法分析、语法分析,然后解释执行SQL语句,完成对数据库文件的相应操作,实现DBMS的基本功能。
目的:
1.加深编译原理基础知识的理解:
词法分析、语法分析、语法制导翻译等;
2.加深相关基础知识的理解:
数据库系统、数据结构、操作系统等。
1.2完成情况
已经实现的功能、语句。
CREATEDATABASEDB;
USEDB;
//CREATE测试
CREATETABLESTUDENT(SNAMECHAR(8),SAGEINT,SSEXCHAR(4));
CREATETABLECOURSE(CNAMECHAR(9),CCREDITINT);
CREATETABLESC(SNAMECHAR(8),CNAMECHAR(9),GRADEINT);
//INSERT测试
INSERTINTOSTUDENTVALUES(HUANG,22,M);
INSERTINTOSTUDENTVALUES(HAI,21,M);
INSERTINTOSTUDENTVALUES(BING,23,W);
SELECTSNAME,SAGE,SSEXFROMSTUDENT;
INSERTINTOCOURSEVALUES(DB,3);
INSERTINTOCOURSEVALUES(SA,4);
SELECTCNAME,CCREDITFROMCOURSE;
INSERTINTOSCVALUES(HUANG,DB,85);
INSERTINTOSCVALUES(WANG,SA,90);
SELECTSNAME,CNAME,GRADEFROMSC;
//SHOW测试
SHOWTABLE;
//SELECT测试
SELECT*FROMSTUDENT;
selectSNAMEfromSTUDENT;
//小写
SELECTSNAMEFROMSTUDENTWHERESAGE=21;
SELECTCNAME,CCREDITFROMCOURSEWHERECNAME=DB;
SELECTCNAMEFROMCOURSEWHERECCREDIT=5;
//没有匹配情况
//UPDATE测试
UPDATESTUDENTSETSSEX=WWHERESAGE=22;
UPDATECOURSESETCCREDIT=5WHERECNAME=DB;
//DELETE测试
DELETEFROMSTUDENTWHERESAGE=22;
DELETEFROMCOURSEWHERECNAME=AB;
//删除失败情况
//DROP测试
DROPTABLESC;
//EXIT测试
EXIT;
//退出系统
2.项目实现方案
2.1逻辑结构与物理结构
为了要实现增加的SQL语句,通过文件db.db保存所创建的数据库,通过文件***table.db和***field.db保存用户所创建表的信息和列的信息,对每一个表建立单独文件保存所插入的记录。
Db.db文件需要保存所创建的数据库名称。
***table.db文件用来保存所建立的表名以及列的个数。
***field.db文件用来保存每个表的列名、序号、类型、长度。
这样做的优点当然是简化DBMS编程难度,减少数据库物理存储方面的编程。
但是没有真正实现DBMS的物理存储。
2.2语法结构与数据结构
createsql正规式:
CREATETABLEtable'
('
fieldsdefinition'
)'
'
;
'
createsql语句的产生式语法结构:
struct Createfieldsdef{ /*createsql中的字段定义*/
char *field;
//字段名称
inttype;
//字段类型
int length;
//字段长度
structCreatefieldsdef*next_fdef;
//下一字段
};
struct Createstruct{ /*createsql语法树根节点*/
char *table;
//基本表名称
structCreatefieldsdef *fdef;
//字段定义
例如:
CREATETABLEStudent
(SnoCHAR(9),SnameCHAR(20),SsexCHAR
(2),SageINT);
对应的数据结构如下图所示:
图1createsql对应的数据结构
Selectsql正规式:
SELECTtable_fieldsFROMtables'
|SELECTtable_fieldsFROMtablesWHEREconditions'
selectsql语句的产生式语法结构:
struct Conditions{ /*条件*/
structConditions *left;
//左部条件
structConditions *right;
//右部条件
char comp;
/*'
a'
是and,'
o'
是or,'
<
'
>
='
‘!
*/
int type;
/*0是字段,1是字符串,2是整数*/
char *value;
/*根据type存放字段名、字符串或整数*/
intnumvalue;
char *table;
/*NULL或表名*/
struct Selectfields{/*select语句中选中的字段*/
char *table;
//字段所属表
char *field;
//字段名称
struct Selectfields *next_sf;
//下一个字段
struct Selecttables{ /*select语句中选中的表*/
char *table;
//基本表名称
structSelecttables*next_st;
//下一个表
structSelectstruct
{ /*select语法树的根节点*/
structSelectfields *sf;
//所选字段
structSelecttables *st;
//所选基本表
structConditions *cons;
//条件
SELECTSno,SnameFROMstudentWHERESsex='
男'
ANDSage=20;
图2selectsql对应的数据结构
insertsql正规式:
INSERTINTOtableVALUES'
table_values'
insertsql语句的产生式语法结构:
structInsertstruct
{
char*table;
structInsertvalue*next_val;
structInsertvalue
intnumval;
char*charval;
structInsertvalue*next;
图3insertsql对应的数据结构
updatesql正规式:
UPDATEtableSETexpsWHEREconditions'
updatasql语句的产生式语法结构:
structUpdatevalue
char*field;
char*field_value;
structUpdatevalue*next;
showsql正规式:
showtable:
SHOWTABLE'
dropsql正规式:
dropsql:
DROPTABLEtable'
Usesql正规式:
USEdatabasename'
exitsql正规式:
EXIT'
Databasesql正规式:
CREATEDATABASEdatabasename'
Deletesql正规式:
DELETEFROMtableWHEREconditions'
2.3功能测试
测试所实现的SQL语句的基本功能:
测试1
输入:
输出:
测试2
测试3
测试4
测试5
测试6
测试7
测试8
SELECTSNAME,SAGE,SSEXFROMST