利用简单的字符串匹配模拟数据库的DBMS

DBMS管理系统

先说一下,为什么要在这样一个时候,写一个DBMS,主要是我的学长告诉我,周日要找我吃饭,我平时不在学校住啊,我就早上就赶过来了,我就问啊,咱们什么时候吃饭啊,没人回答。。。过了一会终于回答了,告诉我晚上六点半。。。我就想那我可以做点工作嘛,毕竟最近一直在打工嘛,刚想敲安卓代码,就发现没带数据线没有办法调试,所以就写这个数据库实验玩一玩咯,打算一次性全写完得啦,不想一次一次得写啦。

我先将数据库的功能进行了分类:

  • 一. 基于数据库的操作

1.数据库的创建:
创建数据库时,需要输入管理员的用户名,用户口令,管理员的权限默认是最大值,同时需要将管理员的用户名,用户口令,用户权限存到数据字典中,其中用户口令将采用MD5加密,这样即使数据字典被破解,管理员的口令也不会被盗取。


2.完整性的约束
①:创建表的过程,要检查表名是否重复,如果重复将提示创建表失败
②:数据插入过程中,要检查是否符合用户输入的类型值,如果不满足,将提示用户插入失败


3.数据库安全问题的处理
①:要建立用户权限的机制
②:所有用户的用户口令要采用MD5加密后存储

  • 二. 文件操作

1.利用java对txt创建的操作
2.利用java向txt中写入的操作
3.利用java对txt内容读取的操作
4.利用java删除txt的操作

  • 三.用户类的定义

1.为用户定义用户名、密码、权限的操作
2.管理员可以授权的操作

  • 四.对表内容的操作

1.增添数据的操作:Insert
①:要检查表名是否正确
②:要检查插入的属性个数是否正确,如果属性值为空请输入null
③:检查属性值是否是预先定义好的类型


2.删除数据的操作:Delete
①:该删除操作需要删除的是一整行数据,如果需要删除某个属性值,需要调用更改的接口,将值修改为null即可


3.修改数据的操作:Update
①:修改是可以根据用户输入的条件进行修改,需要输入新的一行,暂不支持单独输入某一个属性的修改


4.查询数据的操作:Select
①:能够处理多个表的连接操作;查询条件包括and、or、=、≠、≤、≥、<、>
②:实现全关系选择操作(select * from 关系名)。
③:实现单关系的投影操作(select 属性名列表 from 关系名)。
④:实现单关系的选择操作(select * from 关系名 where 条件表达式)。
⑤:实现单关系的选择和投影操作(select 属性名列表 from 关系名 where 选择条件)。//选择条件是指“属性名 操作符 常量”形式的条件
⑥:实现两个关系和多个关系的连接操作(select * from 关系名列表 where 连接条件)。//选择条件是指“属性名 操作符 属性名”形式的条件
⑦:实现两个关系和多个关系的选择和连接操作(select * from 关系名列表 where 选择条件和连接条件)。
⑧:实现两个关系和多个关系的投影和连接操作(select 属性名列表 from 关系名列表 where 连接条件)。
⑨:实现两个关系和多个关系的选择、投影和连接操作(select 属性名列表 from 关系名列表 where 条件表达式)。


5.增添主键的操作:CreateKey
6.删除主键的操作:DeleteKey
7.修改主键的操作:UpdateKey
8.输出表结构的操作:Select *

  • 五.对表这个层级的操作

1.创建表:CreateTable
①:需要先查重,如果已经有该表则提示用户创建表失败
②:需要将表的属性,和属性信息写到数据字典中,需要建立这样一张表存储在txt中


2.删除表:DeleteTable
①:删除数据字典中的信息,删除对应的txt文件

  • 六.修改表结构的操作

1.增添表的属性:AlterAdd
①:检查是否已经具有该属性,已经有,回复用户失败
②:修改对应的数据字典,将表中加一列,属性值全部置空


2.删除表的属性:AlterDrop
①:检查是否已经具有该属性,若没有,回复用户失败
②:修改对应的数据字典,删除表中的这一列


3.创建索引的操作:CreateIndex
①:检查是否已经具有该索引,如果有这个索引,则回复失败
②:创建索引文件,修改数据字典中表的信息


4.删除索引的操作:DeleteIndex
①:检查是否已经具有该索引,如果没有这个索引,则回复失败
②:删除索引文件,修改数据字典中表的信息

//TODO 未完待续

你可能感兴趣的:(利用简单的字符串匹配模拟数据库的DBMS)