ImageVerifierCode 换一换
格式:DOCX , 页数:38 ,大小:628.88KB ,
资源ID:16579037      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/16579037.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(西电编译原理上机报告文档格式.docx)为本站会员(b****4)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

西电编译原理上机报告文档格式.docx

1、类型name数据库的名称char(20)dbfile数据库的元数据文件名称char(40)datfile数据库的基本数据文件名称(2)用户数据库由于在我的设计中,为数据库中每个表创建一个基本数据文件,所以不需要ppt中的“起始页”,添加了一个“表中列的数目”的列,如下表所示:表2 用户数据库的元数据的逻辑结构tname表的名称col_count表中列的数目int(4)表的名称,与前面的一样col_num列号col_namechar(10)col_type列的类型offset偏移width宽度说明:表中col_type列,取值为整数,1表示字符串,2表示整型与ppt中的参考方案不同的是,对于数据

2、库中的每一个表,我并不是把每个表的基本数据均存放在一个与数据库同名的基本数据文件中,而是为每个表创建一个与表同名的基本数据文件。因此,基本数据的逻辑结构与每个表的结构有关。当然,虽然为每个表创建一个与表同名的基本数据文件,但是为了与系统数据库的基本数据相匹配,仍然创建了一个与数据库同名的基本数据文件,只是文件为空,没有逻辑结构。2.物理结构所有的数据库文件均存放在名为“mydb”的根文件夹下。在根文件夹下,创建元数据文件sys.db,创建基本数据文件sys.dat。当创建一个数据库(如xjgl)时,在根文件夹下创建一个与数据库同名的文件夹(xjgl),在此文件夹下,创建与数据库同名的元数据文件

3、(如xjgl.db),创建与数据库同名的基本数据文件(如xjgl.dat)。当创建一个表(如student)时,在表所属的数据库的文件夹下,创建表的基本数据文件(student.dat)。 (1)系统数据库1)元数据的物理结构在我设计的数据库中,仅仅是在“mydb”根文件夹下创建了一个sys.db文件,但是文件中没有任何数据。2)基本数据的物理结构在“mydb”根文件夹下创建了一个sys.dat文件,文件中数据的保存实例如下表:表3 系统数据库的基本数据的物理结构xjglxjgl.dbxjgl.dat在每个数据库(如xjgl)的同名文件夹下,创建与数据库同名的元数据文件(如xjgl.db),文

4、件中数据的保存实例如下表:表4 用户数据库的元数据的物理结构student3sname120sage24ssex24coursecnamecidcs在每个数据库(如xjgl)的同名文件夹下,创建与数据库同名的基本数据文件(如xjgl.dat),但是文件中不存放任何表的基本数据。每个表的基本数据均存放在与表同名的基本数据文件中。如student表中的基本数据存放在student.dat文件中,course表中的基本数据存放在course.dat文件中,sc表中的基本数据存放在sc.dat文件中,文件中数据的保存实例如下两表:表5 用户数据库的student表的基本数据的物理结构zhangsan2

5、2lisi23wangwu21zhouliuxiaobaixiaohei19表6 用户数据库的course表的基本数据的物理结构dbcomplierc 3.优缺点(1)优点:一个表对应一个基本数据文件,对表的操作容易理解,文件指针移动不易出错。(2)缺点:存在空的文件,浪费存储空间。2.2 语法结构与数据结构1.CREATE DATABASE语句(1)产生式语法结构:create_database : CREATE DATABASE database ; ;非终结符create_database的属性使用如右结构说明:char *yych;非终结符database的属性:database :

6、ID (字符串)(2)以实例说明该数据结构:CREATE DATABASE XJGL ;对应的数据结构如下图所示:图1 数据结构图2.SHOW DATABASES语句show_databases : SHOW DATABASES 非终结符show_databases无属性SHOW DATABASES ;无数据结构3.DROP DATABASE语句drop_database : DROP DATABASE database 非终结符drop_database的属性使用如右结构说明:DROP DATABASE XJGL ;图2 数据结构图4.USE DATABASE语句use_database :

7、 USE database 非终结符use_database的属性使用如右结构说明:USE XJGL ;图3 数据结构图5.CREATE TABLE语句createsql : CREATE TABLE table ( fieldsdefinition ) table : ID ;fieldsdefinition : field_type | fieldsdefinition , field_type ;field_type : field type ;field :type : CHAR NUMBER | INT ;非终结符createsql的属性使用如下结构说明:struct Creates

8、truct /create语法树根节点 char *table; struct Createfieldsdef *fdef;非终结符fieldsdefinition与field_type的属性使用如下结构说明:struct Createfieldsdef / create语句中的字段定义 char *field; int type; int length; struct Createfieldsdef *next_fdef;非终结符type的属性使用如下结构说明:struct Type_def /create语句中的字段的类型定义CREATE TABLE Student (Sname CHAR

9、(20), Sage INT, Ssex INT );图4 数据结构图6.SHOW TABLES语句show_tables : SHOW TABLES 非终结符show_tables无属性SHOW TABLES ;7.DROP TABLE语句drop_table : DROP TABLE table 非终结符drop_table的属性使用如右结构说明:非终结符table的属性:DROP table course;图5 数据结构图8.INSERT语句insertsql : INSERT INTO table VALUES insert_values | INSERT INTO table ins

10、ert_fields VALUES insert_fields : insert_field | insert_fields insert_field ;insert_field :insert_values : insert_value | | insert_values insert_value ;insert_value : ID | NUMBER ;非终结符insertsql的属性使用如下结构说明:struct Insertstruct /insert语法树根节点 struct Insertedfields *insert_fields; struct Insertedvalues *

11、insert_values;非终结符insert_fields与insert_field的属性使用如下结构说明:struct Insertedfields /insert语句中插入的列的定义 struct Insertedfields *next_field;非终结符insert_values与insert_value的属性使用如下结构说明: struct Insertedvalues /insert语句中插入的值的定义 int type; char *value; struct Insertedvalues *next_value;INSERT INTO Student(Sname,Sage

12、,Ssex) VALUES(“zhangsan”,22,1) ;图6 数据结构图9.SELECT语句selectsql : SELECT fields_star FROM tables | SELECT fields_star FROM tables WHERE conditions fields_star : table_fields | *table_fields : table_field | table_fields table_field ;table_field : field | table . field ;tables : tables table | table ;cond

13、itions : condition | conditions | conditions AND conditions | conditions OR conditions ;condition : comp_left comp_op comp_right ;comp_left : table_field | NUMBER | comp_right:comp_op :=!非终结符selectsql的属性使用如下结构说明:struct Selectstruct /select语法树根节点 struct Selectedfields *sf; struct Selectedtables *st;

14、struct Conditions *cons;非终结符fields_star、table_fields与table_field的属性使用如下结构说明:struct Selectedfields /select语句中查询的列的定义 char *table; char *field; struct Selectedfields *next_sf;非终结符tables的属性使用如下结构说明:struct Selectedtables / select语句中查询的表的定义 struct Selectedtables *next_st;非终结符condition、conditions、comp_lef

15、t、comp_right、comp_op的属性使用如下结构说明:struct Conditions /select语句中查询的条件的定义 struct Conditions *left; struct Conditions *right; char comp_op; char *value;SELECT Sname,Sage FROM Student WHERE (Sage21) AND (Ssex=0);图7 数据结构图10. DELETE语句deletesql : DELETE FROM table | DELETE FROM table WHERE conditions 非终结符dele

16、tesql的属性使用如下结构说明:struct Deletestruct /delete语法树根节点 struct Conditions *cons;DELET FROM Student WHERE Sage”,判断条件的左部值是否大于条件的右部值,若是则返回1;否则返回0。同理,可以处理操作符分别为“”、“=”、“!”时的情况。(4) 判断条件中的操作符,若操作符为“a” 以条件左部为参数,递归调用得到左部的返回值,若左部返回值为0,则返回0;同理,可以处理操作符为“o”时的情况。(5)若条件的类型是字段,根据表中各个字段的长度偏移,找到该字段在一个元组中的相对位置,接着判断它是上一层条件的

17、左部还是右部。若是左部,则将该字段在元组中的值赋值给左部值变量;若是右部,则将该字段在元组中的值赋值给右部值变量。若条件的类型是字符串或整型,判断它是上一层条件的左部还是右部。若是左部,则将结点p中传来的值赋值给左部值变量;若是右部,则将结点p中传来的值赋值给右部值变量。判断结束,返回2。judge_set(struct Updatedfields *p)当更新一个表的数据时,判断语句中set部分是否正确,即检查set部分中的字段是否存在,以及字段的类型与更新的值的类型是否一致。struct Updatedfields *p,更新字段结点(1)当set结点不为空时,转(2),否则,返回1。(2

18、)检查表中时候存在该字段以及字段的类型与更新的值的类型是否一致,若是,则p转向下一个更新字段结点,转(1);否则,返回0。update_data(struct Updatedfields *p)更新数据,当表中的一个元组标记为可更新时,更新元组,然后将改变的元组写进一个新的文件;否则,直接将原来的元组写进此新的文件。struct Updatedfields *p,更新字段结点无返回值(1)判断元组是否标记为可更新,若是,则转(2);否则,转(3)。(2)根据结点p,在元组中将set部分中需要更新的字段进行更新。所有字段更新完成,转(3)。(3)将元组写入一个新的文件。judge_sf(struct Selectedfields *p)当进行查询时,判断选择的属性列是否正确(在表中是否存在,多表查询不带表的名称时是否唯一)。struct Selectedfields *p,查询的属性列结点1表示选择属性列正确,0表示选择属性列错误(1)判断选择属性列的结点内容是否为空,若为空(表示选择的属性列为“*”),返回1;否则,转(2)。(2)判断选择属性列的结点p是否为空,若为空,转(4);(3)判断当前属性列是

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1