编译原理机报告
DBMS设计实现
学号: 姓名:
手机: 邮箱:
完成时间:2013 年X月X日
目 录
1 项目概况 3
11 基目标 3
12 完成情况 3
2 项目实现方案 4
21 逻辑结构物理结构 4
22 语法结构数结构 7
23 执行流程 19
24 功测试 39
3 总结未工作 48
31 未完成功 48
32 未实现方案 48
1 项目概况
11 基目标
设计实现DBMS原型系统接受基SQL语句进行词法分析语法分析然解释执行SQL语句完成数库文件相应操作实现DBMS基功
12 完成情况
1CREATE DATABASE 创建数库
2SHOW DATABASES 显示数库名
3DROP DATABASE 删数库
4USE DATABASE 选择数库
5CREATE TABLE 创建表
6SHOW TABLES 显示表名
7DROP TABLE 删表
8INSERT 插入元组
9SELECT 查询元组
10DELETE 删元组
11UPDATE 更新元组
12EXIT 退出系统
2 项目实现方案
21 逻辑结构物理结构
1逻辑结构
(1)系统数库
1)元数逻辑结构
设计系统数库中然建元数文件文件中没数元数逻辑结构存
2)基数逻辑结构
表1 系统数库基数逻辑结构
列名
说明
类型
name
数库名称
char(20)
dbfile
数库元数文件名称
char(40)
datfile
数库基数文件名称
char(40)
(2)户数库
1)元数逻辑结构
设计中数库中表创建基数文件需ppt中起始页添加表中列数目列表示:
表2 户数库元数逻辑结构
列名
说明
类型
tname
表名称
char(20)
col_count
表中列数目
int(4)
tname
表名称前面样
char(20)
col_num
列号
int(4)
col_name
列名
char(10)
col_type
列类型
int(4)
offset
偏移
int(4)
width
宽度
int(4)
说明:表中col_type列取值整数1表示字符串2表示整型
2)基数逻辑结构
ppt中参考方案数库中表表基数均存放数库名基数文件中表创建表名基数文件基数逻辑结构表结构关然然表创建表名基数文件系统数库基数相匹配然创建数库名基数文件文件空没逻辑结构
2物理结构
数库文件均存放名mydb根文件夹根文件夹创建元数文件sysdb创建基数文件sysdat创建数库(xjgl)时根文件夹创建数库名文件夹(xjgl)文件夹创建数库名元数文件(xjgldb)创建数库名基数文件(xjgldat)创建表(student)时表属数库文件夹创建表基数文件(studentdat)
(1)系统数库
1)元数物理结构
设计数库中仅仅mydb根文件夹创建sysdb文件文件中没数
2)基数物理结构
mydb根文件夹创建sysdat文件文件中数保存实例表:
表3 系统数库基数物理结构
name
dbfile
datfile
xjgl
xjgldb
xjgldat
…
…
…
(2)户数库
1)元数物理结构
数库(xjgl)名文件夹创建数库名元数文件(xjgldb)文件中数保存实例表:
表4 户数库元数物理结构
student
3
student
0
sname
1
0
20
student
1
sage
2
20
4
student
2
ssex
2
24
4
course
2
course
0
cname
1
0
20
course
1
cid
2
20
4
cs
2
cs
0
sname
1
0
20
cs
1
cid
2
20
4
2)基数物理结构
数库(xjgl)名文件夹创建数库名基数文件(xjgldat)文件中存放表基数表基数均存放表名基数文件中student表中基数存放studentdat文件中course表中基数存放coursedat文件中sc表中基数存放scdat文件中文件中数保存实例两表:
表5 户数库student表基数物理结构
sname
sage
ssex
zhangsan
22
1
lisi
23
0
wangwu
21
0
zhouliu
22
1
xiaobai
23
0
xiaohei
19
0
表6 户数库course表基数物理结构
cname
cid
db
1
complier
2
c
3
3优缺点
(1)优点:表应基数文件表操作容易理解文件指针移动易出错
(2)缺点:存空文件浪费存储空间
22 语法结构数结构
1CREATE DATABASE语句
(1)产生式语法结构:
create_database CREATE DATABASE database ''
非终结符create_database属性右结构说明:char *yych
非终结符database属性:database ID (字符串)
(2)实例说明该数结构:
CREATE DATABASE XJGL
应数结构图示:
图1 数结构图
2SHOW DATABASES语句
(1)产生式语法结构:
show_databases SHOW DATABASES ''
非终结符show_databases属性
(2)实例说明该数结构:
SHOW DATABASES
数结构
3DROP DATABASE语句
(1)产生式语法结构:
drop_database DROP DATABASE database ''
非终结符drop_database属性右结构说明:char *yych
非终结符database属性:database ID (字符串)
(2)实例说明该数结构:
DROP DATABASE XJGL
应数结构图示:
图2 数结构图
4USE DATABASE语句
(1)产生式语法结构:
use_database USE database ''
非终结符use_database属性右结构说明:char *yych
非终结符database属性:database ID (字符串)
(2)实例说明该数结构:
USE XJGL
应数结构图示:
图3 数结构图
5CREATE TABLE语句
(1)产生式语法结构:
createsql CREATE TABLE table '(' fieldsdefinition ')' ''
table ID
fieldsdefinition field_type
| fieldsdefinition '' field_type
field_type field type
field ID
type CHAR '(' NUMBER ')' | INT
非终结符createsql属性结构说明:
struct Createstruct{ create语法树根节点
char *table
struct Createfieldsdef *fdef
}
非终结符fieldsdefinitionfield_type属性结构说明:
struct Createfieldsdef{ create语句中字段定义
char *field
int type
int length
struct Createfieldsdef *next_fdef
}
非终结符type属性结构说明:
struct Type_def{ create语句中字段类型定义
int type
int length
}
(2)实例说明该数结构:
CREATE TABLE Student (Sname CHAR(20) Sage INT Ssex INT )
应数结构图示:
图4 数结构图
6SHOW TABLES语句
(1)产生式语法结构:
show_tables SHOW TABLES ''
非终结符show_tables属性
(2)实例说明该数结构:
SHOW TABLES
数结构
7DROP TABLE语句
(1)产生式语法结构:
drop_table DROP TABLE table ''
非终结符drop_table属性右结构说明:char *yych
非终结符table属性:table ID (字符串)
(2)实例说明该数结构:
DROP table course
应数结构图示:
图5 数结构图
8INSERT语句
(1)产生式语法结构:
insertsql INSERT INTO table VALUES '(' insert_values ')' ''
| INSERT INTO table '(' insert_fields ')' VALUES '(' insert_values ')' ''
insert_fields insert_field | insert_fields '' insert_field
insert_field ID
insert_values insert_value | | insert_values '' insert_value
insert_value '\'' ID '\'' | NUMBER
非终结符insertsql属性结构说明:
struct Insertstruct{ insert语法树根节点
char *table
struct Insertedfields *insert_fields
struct Insertedvalues *insert_values
}
非终结符insert_fieldsinsert_field属性结构说明:
struct Insertedfields{ insert语句中插入列定义
char *field
struct Insertedfields *next_field
}
非终结符insert_valuesinsert_value属性结构说明:
struct Insertedvalues{ insert语句中插入值定义
int type
char *value
struct Insertedvalues *next_value
}
(2)实例说明该数结构:
INSERT INTO Student(SnameSageSsex) VALUES(zhangsan221)
应数结构图示:
图6 数结构图
9SELECT语句
(1)产生式语法结构:
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
conditions condition | '(' conditions ')' | conditions AND conditions
| conditions OR conditions
condition comp_left comp_op comp_right
comp_left table_field | NUMBER | '\'' ID '\''
comp_right table_field | NUMBER | '\'' ID '\''
comp_op '<' | '>' | '' | '' ''
非终结符selectsql属性结构说明:
struct Selectstruct{ select语法树根节点
struct Selectedfields *sf
struct Selectedtables *st
struct Conditions *cons
}
非终结符fields_startable_fieldstable_field属性结构说明:
struct Selectedfields{ select语句中查询列定义
char *table
char *field
struct Selectedfields *next_sf
}
非终结符tables属性结构说明:
struct Selectedtables{ select语句中查询表定义
char *table
struct Selectedtables *next_st
}
非终结符conditionconditionscomp_leftcomp_rightcomp_op属性结构说明:
struct Conditions{ select语句中查询条件定义
struct Conditions *left
struct Conditions *right
char comp_op
int type
char *value
char *table
}
(2)实例说明该数结构:
SELECT SnameSage FROM Student WHERE (Sage>21) AND (Ssex0)
应数结构图示:
图7 数结构图
10 DELETE语句
(1)产生式语法结构:
deletesql DELETE FROM table ''
| DELETE FROM table WHERE conditions ''
非终结符deletesql属性结构说明:
struct Deletestruct{ delete语法树根节点
char *table
struct Conditions *cons
}
(2)实例说明该数结构:
DELET FROM Student WHERE Sage<21
应数结构图示:
图8 数结构图
11UPDATE语句
(1)产生式语法结构:
updatesql UPDATE table SET field_expressions ''
| UPDATE table SET field_expressions WHERE conditions ''
field_expressions field_expression
| field_expressions '' field_expression
field_expression field '' expression
expression '\'' ID '\'' | NUMBER
非终结符updatesql属性结构说明:
struct Updatestruct{ update语法树根节点
char *table
struct Updatedfields *fe
struct Conditions *cons
}
非终结符field_expressionsfield_expression属性结构说明:
struct Updatedfields{ update语句中更新字段定义
char *field
struct Expression *expression
struct Updatedfields *next_fe
}
非终结符expression属性结构说明:
struct Expression{ update语句中更新值定义
int type 1表示字符串2表示整数
char *value
}
(2)实例说明该数结构:
UPDATE Student SET Sage21 WHERE Ssex1
应数结构图示:
图9 数结构图
12EXIT语句
(1)产生式语法结构:
exit EXIT ''
(2) 实例说明该数结构:
EXIT
数结构
23 执行流程
外部函数:
函数名称:judge_cons(struct Conditions *p)
函数说明:删者更新表数时判断语句中条件否正确检查条件中字段否存条件中操作符两端数类型否致
输入参数:struct Conditions *p条件结点
输出参数:1表示正确0表示错误
执行流程:
(1)判断条件左部否空空转(2)空转(3)
(2)条件左部参数递调左部返回值左部返回值0返回0左部返回值1条件右部参数递调右部返回值右部返回值0返回0右部返回时1返回1
(3)条件类型字段检查表中否存字段存置标志变量0存判断层条件左部右部左部记录字段类型置标志变量1右部判断字段类型左部条件类型否相相置标志变量1置标志变量0 条件类型字符串整型判断层条件左部右部左部记录时条件类型置标志变量1右部判断条件类型左部条件类型否相相置标志变量1置标志变量0返回标志变量
函数名称:judge(struct Conditions *p)
函数说明:删者更新表数时判断表中元组否满足删者更新条件
输入参数:struct Conditions *p条件结点
输出参数:1表示满足条件0表示满足条件
执行流程:
(1)判断条件左部否空空转(2)空转(5)
(2)条件左部条件右部参数递调左部右部返回值左部返回值右部返回值均2转(3)否转(4)
(3)判断条件中操作符操作符>判断条件左部值否条件右部值返回1否返回0理处理操作符分>时情况
(4) 判断条件中操作符操作符a 条件左部参数递调左部返回值左部返回值0返回0左部返回值1条件右部参数递调右部返回值右部返回值0返回0右部返回时1返回1理处理操作符o时情况
(5)条件类型字段根表中字段长度偏移找该字段元组中相位置接着判断层条件左部右部左部该字段元组中值赋值左部值变量右部该字段元组中值赋值右部值变量条件类型字符串整型判断层条件左部右部左部结点p中传值赋值左部值变量右部结点p中传值赋值右部值变量判断结束返回2
函数名称:judge_set(struct Updatedfields *p)
函数说明:更新表数时判断语句中set部分否正确检查set部分中字段否存字段类型更新值类型否致
输入参数:struct Updatedfields *p更新字段结点
输出参数:1表示正确0表示错误
执行流程:
(1)set结点空时转(2)否返回1
(2)检查表中时候存该字段字段类型更新值类型否致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)
(3)判断前属性列否注明属表注明属表先找表表中检查属性列否存存p指属性列结点转(2)存表示属性列存输出错误返回0未注明属表查询表中查找属性列存唯p指属性列结点转(2)否输出应错误返回0
(4)返回1
函数名称:judge_sel_cons(struct Conditions *p)
函数说明:查询表时判断语句中条件否正确检查条件中字段否存条件中操作符两端数类型否致
输入参数:struct Conditions *p条件结点
输出参数:1表示正确0表示错误
执行流程:
(1)判断条件左部否空空转(2)空转(3)
(2)条件左部参数递调左部返回值左部返回值0返回0左部返回值1条件右部参数递调右部返回值右部返回值0返回0右部返回时1返回1
(3)条件类型字段注明字段属表先找表表中检查字段否存存置标志变量0存判断层条件左部右部左部记录字段类型置标志变量1右部判断字段类型左部条件类型否相相置标志变量1置标志变量0未注明字段属表查询表中查找字段存置标志变量0存判断层条件左部右部左部记录字段类型置标志变量1右部判断字段类型左部条件类型否相相置标志变量1置标志变量0
条件类型字符串整型判断层条件左部右部左部记录时条件类型置标志变量1右部判断条件类型左部条件类型否相相置标志变量1置标志变量0
返回标志变量
说明:函数judge _cons(struct Conditions *p)函数执行流程基致唯区前者针查询语句条件中字段涉表者针删更新语句条件中字段仅仅涉表
函数名称:create_file()
函数说明:进行表查询时表中元组进行连接新元组存入新文件中(适单表查询)
输入参数:输入参数
输出参数:返回值
执行流程:
(1)置变量i初始0转(2)
(2)变量值查询涉表数量时转(3)
(3)i0第表中元组全部存入文件file1转(2)i0文件file1中元组第i+1表中元组笛卡尔积形式连接新元组存入文件file2中删文件file1文件file2重命名file1转(2)
函数名称:judge_sel(struct Conditions *p)
函数说明:查询表数时判断表中元组否满足查询条件
输入参数:struct Conditions *p条件结点
输出参数:1表示满足条件0表示满足条件
执行流程:
(1)判断条件左部否空空转(2)空转(5)
(2)条件左部条件右部参数递调左部右部返回值左部返回值右部返回值均2转(3)否转(4)
(3)判断条件中操作符操作符>判断条件左部值否条件右部值返回1否返回0理处理操作符分>时情况
(4) 判断条件中操作符操作符a 条件左部参数递调左部返回值左部返回值0返回0左部返回值1条件右部参数递调右部返回值右部返回值0返回0右部返回时1返回1理处理操作符o时情况
(5)条件类型字段注明字段属表先找表表中找字段根表中字段长度偏移找该字段元组中相位置接着判断层条件左部右部左部该字段元组中值赋值左部值变量右部该字段元组中值赋值右部值变量未注明字段属表查询表中查找找字段根表中字段长度偏移找该字段元组中相位置接着判断层条件左部右部左部该字段元组中值赋值左部值变量右部该字段元组中值赋值右部值变量
条件类型字符串整型判断层条件左部右部左部结点p中传值赋值左部值变量右部结点p中传值赋值右部值变量判断结束返回2
说明:函数judge (struct Conditions *p)函数执行流程基致唯区前者针查询语句条件中字段涉表者针删更新语句条件中字段仅仅涉表
函数名称:put_sf(struct Selectedfields *p)
函数说明:查询数时输出结果时输出查询属性列名称
输入参数:struct Selectedfields *p查询属性列结点
输出参数:返回值
执行流程:
(1)判断选择属性列结点容否空空(表示选择属性列*)输出查询涉表属性列名称转(4)否转(2)
(2)判断选择属性列结点p否空空转(4)否转(3)
(3)输出属性列结点中属性列名称p指属性列结点转(2)
(4)输出换行结束
函数名称:select_data(struct Selectedfields *p)
函数说明:选择数文件中元组标记选择时根传入参数p选择中全部者部分属性列逐条输出
输入参数:struct Selectedfields *p查询属性列结点
输出参数:返回值
执行流程:
(1)判断元组否标记更新转(2)否转(5)
(2)判断选择属性列结点容否空空(表示选择属性列*)输出整元组转(5)否转(3)
(3)判断选择属性列结点p否空空转(5)否转(4)
(4)判断前属性列否注明属表注明属表先找表表中找属性列根表中属性列长度偏移找该属性列元组中相位置输出元组该属性列值p指选择属性列结点未注明属表查询表中查找找属性列根表中属性列长度偏移找该属性列元组中相位置输出元组该属性列值p指选择属性列结点转(3)
(5)结束
1CREATE DATABASE语句
(1)执行流程:
开文件sysdat检查创建数库否已存存允许创建数库输出创建失败存创建数库需创建数库信息写入文件sysdat末尾接着创建数库名文件夹文件夹创建数库名元数文件(db)基数文件(dat)输出创建成功关闭文件sysdat
(2)执行流程图:
图10 执行流程图
2SHOW DATABASES
(1)执行流程:
开文件sysdat检查文件否空空输出文件中数库空逐条输出文件中数库关闭文件sysdat
(2)执行流程图:
图11 执行流程图
3DROP DATABASE
(1)执行流程:
开文件sysdat检查删数库否存存删数库失败存检查删数库否前选择数库关闭前数库(关闭开数库元数文件置指数库元数文件指针空置指数库名称字符指针空)接着删数库名文件夹文件文件夹修改文件sysdat删文件中数库记录关闭文件sysdat
(2)执行流程图:
图12 执行流程图
4USE DATABASE
(1)执行流程:
判断前否已选择数库关闭前选择数库开文件sysdat检查选择数库否存存选择数库失败存开数库名文件夹名元数文件保存指数库元数文件文件指针字符指针指数库名称选择数库成功关闭文件sysdat
(2)执行流程图:
图13 执行流程图
5CREATE TABLE
(1)执行流程:
判断前否已选择数库(检查指数库元数文件文件指针否空)文件指针空创建表失败文件指针空数库元数文件中查找创建表否已存存创建表失败存create语法树中表信息存入元数文件末尾创建表名基数文件(dat)创建表成功
(2)执行流程图:
图14 执行流程图
6SHOW TABLES
(1)执行流程:
判断前否已选择数库(检查指数库元数文件文件指针否空)文件指针空输出表失败文件指针空检查数库元数文件否空空数库中未创建表空输出文件中记录表
(2)执行流程图:
图15 执行流程图
7DROP TABLE
(1)执行流程:
判断前否已选择数库(检查指数库元数文件文件指针否空)文件指针空删表失败文件指针空检查数库元数文件判断删表否存存删表失败存删表名基数文件修改数库元数文件删表关信息删成功
(2)执行流程图:
图16 执行流程图
8INSERT
(1)执行流程:
判断前否已选择数库(检查指数库元数文件文件指针否空)文件指针空插入数失败文件指针空检查数库元数文件判断插入数表否存表存插入数失败表存判断否出需插入属性列没出需插入属性列检查插入实际值数目数类型表实际属性列数目数类型否致致数插入表名基数文件末尾插入数成功致插入数失败出需插入属性列 检查插入属性列数目数类型插入值数目数类型否保持致属性列表中否存述条件均满足数插入表名基数文件末尾插入数成功否插入数失败
(2)执行流程图:
图17 执行流程图
9SELECT
(1)执行流程:
判断前否已选择数库(检查指数库元数文件文件指针否空)文件指针空查询数失败文件指针空检查数库元数文件判断查询数涉表否均存表存查询数失败表存调函数judge_sf()判断查询属性列否正确属性列错误查询数失败属性列正确判断查询条件否存查询条件存调函数create_file()生成记录表连接时组合元组时文件接着时文件中元组调函数select_data()输出想查询属性列值查询成功查询条件存调函数judge_sel_cons()判断查询条件否正确条件错误查询失败条件正确调函数create_file()生成记录表连接时组合元组时文件接着时文件中元组调函数judge_sel()标记元组否满足查询条件时文件中元组调函数select_data()输出想查询属性列值查询成功
(2)执行流程图:
图18 执行流程图
10DELETE
(1)执行流程:
判断前否已选择数库(检查指数库元数文件文件指针否空)文件指针空删数失败文件指针空检查数库元数文件判断删数表否存表存删数失败表存判断删语句条件否存删语句条件存清空表名基数文件容删成功删语句条件存调函数judge _cons()判断删条件否正确条件错误删数失败条件正确表中元组调函数judge()标记元组否满足删条件接着满足删条件元组存入新基数文件原表名基数文件删重命名新基数文件表名字
(2)执行流程图:
图19 执行流程图
11UPDATE
(1)执行流程:
判断前否已选择数库(检查指数库元数文件文件指针否空)文件指针空更新数失败文件指针空检查数库元数文件判断更新数表否存表存更新数失败表存调函数judge_set()判断更新语句中set部分否正确set部分错误更新数失败set部分正确判断更新语句中条件否存条件存读出表中元组调函数update_data()更新元组更新元组写入新基数文件元组更新完成原表名基数文件删重命名新基数文件表名字更新成功条件存调函数judge_cons()判断更新语句中条件否正确条件错误更新数失败条件正确表中元组调函数judge()标记元组否满足更新条件接着调函数update_data()更新标记更新元组更新元组需更新元组写入新基数文件元组更新完成原表名基数文件删重命名新基数文件表名字更新成功
(2)执行流程图:
图20 执行流程图
12EXIT
(1)执行流程:
退出程序输出退出成功
(2)执行流程图:
执行流程图
24 功测试
测试实现SQL语句基功测试:
测试1(创建数库)
输入:(1)CREATE DATABASE XJGL
(2)CREATE DATABASE JUST_FOR_TEST
(3)CREATE DATABASE JUST_FOR_TEST
输出:
测试2(输出数库)
输入:SHOW DATABASES
输出:
测试3(删数库)
输入:DROP DATABASE JUST_FOR_TEST
SHOW DATABASES
输出:
测试4(选择数库)
输入:USE XJGL
输出:
测试5(创建表条语句)
输入:CREATE TABLE STUDENT(SNAME CHAR(20)SAGE INTSSEX INT)CREATE TABLE COURSE(CNAME CHAR(20)CID INT)
输出:
测试6(创建表单条语句)
输入:(1)CREATE TABLE CS(SNAME CHAR(20)CID INT)
(2)CREATE TABLE TEST_TABLE(COL1 CHAR(22)COL2 INTCOL3 CHAR(22))
(3)CREATE TABLE TEST_TABLE(COL1 CHAR(22)COL2 INTCOL3 CHAR(22))
输出:
测试7(输出表)
输入:SHOW TABLES
输出:
测试8(删表)
输入:DROP TABLE TEST_TABLE
SHOW TABLES
输出:
测试9(插入数)
输入:(1)INSERT INTO STUDENT(SNAMESAGESSEX) VALUES ('ZHANGSAN'221)
(2)INSERT INTO STUDENT VALUES ('LISI'230)
(3)INSERT INTO STUDENT(SNAMESAGE) VALUES ('WANGWU'21)
(4)INSERT INTO STUDENT VALUES ('ZHAOLIU'221)
(5)INSERT INTO STUDENT VALUES ('XIAOBAI'230)
(6)INSERT INTO STUDENT VALUES ('XIAOHEI'190)
(7)INSERT INTO COURSE(CNAMECID) VALUES ('DB'1)
(8)INSERT INTO COURSE (CNAMECID) VALUES('COMPILER'2)
(9)insert into course (CNAMECID) VALUES('C'3)
输出:
测试10(单表查询)
输入:(1)SELECT SNAMESAGESSEX FROM STUDENT
(2)SELECT SNAMESAGE FROM STUDENT WHERE (SAGE>21) AND (SSEX0)
输出:
测试11(表查询)
输入:SELECT * FROM STUDENTSELECT * FROM COURSE
(1) select * from studentcourse
(2) SELECT * FROM STUDENTCOURSE WHERE (SSEX0) AND (CID1)
输出:
测试12(删数)
输入:SELECT * FROM STUDENT
DELETE FROM STUDENT WHERE (SAGE>21) AND (SSEX0)
SELECT * FROM STUDENT
输出:
测试13(更新数)
输入:SELECT * FROM STUDENT
(1)UPDATE STUDENT SET SAGE21 WHERE SSEX1
SELECT * FROM STUDENT
(2)UPDATE STUDENT SET SAGE27SSEX1 WHERE SNAME'ZHANGSAN'
SELECT * FROM STUDENT
输出:
测试13(退出系统)
输入:EXIT
输出:
3 总结未工作
31 未完成功
1没实现码外码
2没实现视图功
32 未实现方案
1码外码
数库属文件夹创建约束文件limitdb文件中存放该数库中表码外码信息
表码外码信息连续存放首先存放表名称接着存放表码中属性列数目名称接着存放表外码数目外码信息存放外码名称参表名称参表中名称
表进行操作时查找约束文件中信息完成相关判断插入数时检查码值否重复检查外码值参表中否已存等等
2视图
视图做表处理视图属数库文件夹创建视图元数文件viewdb存放创建视图名称属性列属性列分表表名称等信息创建视图时先视图基结构信息存入元数文件viewdb中接着创建视图名基数文件里面存放实际表中元组信息
然总体构想遇问题时述总体构想做细微调整满足实际操作中需求
文档香网(httpswwwxiangdangnet)户传
《香当网》用户分享的内容,不代表《香当网》观点或立场,请自行判断内容的真实性和可靠性!
该内容是文档的文本内容,更好的格式请下载文档