forked from roselone/iSQL
-
Notifications
You must be signed in to change notification settings - Fork 0
Nullees/iSQL
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
#README #文件树 ================================================== .isql |--isql.l flex文件,用于isql的词法分析 |--isql.y bison文件,用于isql的语法分析及语法树构建 |--isql_main.h isql的主要函数,结构及宏声明 |--isql_main.c isql的主要函数实现 |--isql.db/dat isql的数据库文件 |--isql isql可执行文件 |--makefile Makefile |--README.txt 说明文件 #关于版本和版权 ================================================== version 1.0 为isql的第一个版本,很多不完善的地方,下面会具体说明功能及缺陷,2.0在大三考试结束后推出 任何人都可以自由修改和使用源码 如有问题与我联系:roselonelh@gmail.com #运行方法 ================================================== linux平台开发,使用flex && bison进行语法词法生成 现给出Ubuntu下的配置方法,其他发行版类似 1,isql使用c语言编写,首选需要安装build-essential,gcc,flex,bison,命令如下: $ sudo apt-get install build-essential gcc flex bison 2,老一套,直接make即可,编译过程参见makefile $ make 3,运行,默任生成到当前目录,文件名isql $ ./isql 4,身份验证 管理员用户名和密码都为admin,登录即可 # version 1.0 已实现的功能 ================================================== 1,部分支持SQL规范 2,识别大小写 3,可以识别的语法 a创建用户,数据库,表 | CREATE b删除数据库,表 | DROP c用户权限分配和收回 | GRANT REVOKE d插入 查询 表数据 | INSERT SELECT e删除 修改 表数据 | DELETE UPDATE 4,完成a~d的语法树构建及语法制导翻译 5,登录身份的MD5验证 6,物理存储结构设计及实现 # version 1.0 的缺陷 [在下一版中会改进和实现] ================================================== 1,不支持查询嵌套 2,未实现e功能 3,where子句查询有bug,先屏蔽掉了 4,数据库操作权限验证查询有bug,先屏蔽掉了 5,没有异常处理 6,仅支持int和string两种数据类型 7,没有数据库数据空间整理,会不断增长 8,物理存储设计在实验阶段,所能创建的用户和数据库数量有限,这个只要修改配置文件即可,不影响整体的物理结构设计 9,用户密码是明文输入,没有用****代替 #关于安全机制 ================================================== 1,用户密码使用MD5加密存储 使用md5sum进行MD5校验(128-bit) GNU coreutils 项目主页:<http://www.gnu.org/software/coreutils/> 使用bash shell调用MD5SUM计算:echo PASSWD | md5sum 2,数据库操作权限验证方法 #define P_SELECT 0001 #define P_INSERT 0010 #define P_UPDATE 0100 #define P_DELETE 1000 admin用户默认权限:1111,用户编码为0,且只有admin可以进行权力的授予和收回。 验证权限:POWER & POWER_NEEDED 授予权限:POWER | POWER_GRANT 收回权限:~(POWER & POWER_REVOKE) #物理存储 ================================================== isql.db 用于存储数据库结构信息 isql.dat 用于存储数据库数据信息 以下三个函数用于数据库文件操作: char *read_D(FILE *fin, int offset, int length); void write_D(FILE *fin, int offset, char *str); void fill_D(FILE *fin, int offset, int length, char t); 寻址采用类似内存的基址+偏移量方式 数据信息存储文件isql.dat采用类似FAT12的管理方式
About
大三编译原理作业,SQL的解释器,可以解释执行SQL命令,创建小型数据库
Resources
Stars
Watchers
Forks
Releases
No releases published
Packages 0
No packages published
Languages
- C 62.3%
- Yacc 29.8%
- Lex 6.4%
- Makefile 1.5%