数据库管理系统课程设计

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/l1832876815/article/details/85729837

1设计要求

1.1设计存储信息的数据结构

1.1.1设计特殊的存储结构保存用户分权限的注册信息

1.1.2设计特殊的存储结构保存数据表的数据

1.1.3设计特殊的存储结构保存索引数据

1.1.4设计特殊的存储结构保存用户对数据表的操作权限

1.2数据库的创建

创建数据库,并创建数据库中对应数据表、索引文件夹

1.3数据表的操作

1.3.1数据表的创建

应包含主键、外键、唯一键、非空约束的定义操作

1.3.2数据表的插入

应包含完整性约束的检查,违反约束拒绝插入操作

1.3.3数据表的更新

应包含完整性约束的检查,违反约束拒绝更新操作

1.3.4数据表的删除

应包含完整性约束的检查,违反约束拒绝删除操作

1.3.5数据表的查询

应支持where子句的查询,支持简单单表查询及连接查询

1.4索引的创建

1.5用户分权限注册及登陆

1.5.1用户分权限注册

用户可以注册为超级管理员或者普通用户

1.5.2用户的登陆

1.6数据表权限的授予与回收

1.6.1数据表权限的授予

有授予权限的用户授予其他用户数据表的操作权限

1.6.2数据表权限的收回

有授予权限的用户收回其他用户数据表的操作权限

1.7‘Help’命令

1.7.1‘help database’

查询数据库的表信息及索引信息

1.7.2‘help table’

查询数据表的字段等详细信息

1.7.3‘help index’

查询索引的详细信息

2需求分析

数据库管理系统是数据库系统的核心。数据库管理系统将用户自定义的逻辑结构信息转化为计算机中具体的物理数据,并对数据库进行统一地管理和控制,以保证数据库的安全性和完整性。从而使用户更加方便安全地建立、使用和维护数据库数据。EasyDBMS使用Java+Android环境为用户提供了数据库管理系统的基本功能。

2.1用户分权限注册与登陆

用户可以选择注册为‘超级管理员’或者‘普通用户’,为用户划分权限使得管理员更方便安全地管理数据库信息,有效防止的其他用户对数据库的篡改和非法操作,增强了数据库的安全性。

2.2数据库的创建

任意用户都可以创建自己的数据库,在数据库中创建表和索引,拥有该数据库的管理员权限,并且可以授予或收回其他用户对该数据库的操作权限。

2.3数据表的操作

被授予权限的用户可以通过‘create’、‘insert’、‘delete’、‘update’、‘select’等命令进行数据表的创建、插入、删除、更新、查找等操作。
创建命令包含了对字段的主键、外键、唯一键、非空等约束。插入、删除、更新操作同样检查完整性约束。保证了数据库的完整性和安全性。查找操作支持‘where’子句查找,并且支持单表查询和连接查询。

2.4索引的创建

用户可以通过‘create index’命令创建对应数据表的索引

2.5数据表权限的授予与收回

有授权权限的用户可以授予或者收回其他用户的插入、更新、查找、删除权限。方便用户统一管理、维护和使用数据库的数据信息。

2.6‘Help’命令

用户可以通过‘help database’命令查看数据库的目录结构及所含数据表和索引的信息。可以通过‘help table’或者‘help index’查看数据表或索引的详细信息。

3设计思想

本项目主要通过Java字符串中的split()、indexOf()、substring()函数实现对命令的语法语义分析。通过FileReader、BufferedReader类实现对文件的读取。通过FileWriter、BufferedWriter类实现对文件的写入。通过Andriod中的Application实现对用户登录状态,数据库的使用状态的全局保存。

3.1用户的分权限注册与登陆

User.txt用来存取用户注册的用户名和密码。Simple.txt存取所有的普通用户的用户名。Super.txt存取所有的超级管理员的用户名。对于用户的输入先检查是否合法,然后检查是否存在当前用户,最后检查密码是否正确。Application保存用户登录状态。

3.2数据库的创建

检查数据库的创建命令是否合法,其次检查当前数据库是否存在。为当前数据库创建对应文件夹。并将创建者和对应数据库名存入dbcreate.txt文件中。方便权限授予和收回操作的执行。并在数据库中创建table.txt存储该数据库中所有表名,retir.txt存储改数据库中所有索引名。

3.3数据表的创建

首先检查数据表的创建命令是否合法,其次检查数据表是否已存在当前数据库中,最后检查约束条件及字段属性信息。对于字段属性信息,只允许int,char,varchar型数据。对于约束条件,确保主键约束只有一个,外键约束对应被参照表字段存在且为主键。创建该数据表文件夹,将创建者及表名写入grant.txt文件中方便权限授予与收回,将表名存入该数据库的table.txt文件中。将字段信息存入该表文件夹下的index.txt中。创建content.txt文件存取表的内容。

3.4数据表的插入

首先检查插入命令是否合法,其次检查对应表是否存在,检查是否有插入权限,检查是否违反参照性约束、唯一约束等完整性约束,检查输入是否为字段类型中的数据,最后检查是否重复输入。存入content.txt文件中。

3.5数据表的更新

首先检查更新命令的合法性,其次检查对应表是否存在,检查是否有更新权限,检查set和where字段在该表中是否存在,检查是否违反了完整性约束,检查更新后数据是否为符合该字段的数据类型,最后检查更新后是否重复。用ArrayList遍历取出content.txt中的数据及更新后的数据。重新写入到content.txt中。

3.6数据表的删除

首先检查删除命令是否合法,其次检查对应表是否存在,检查是否具有对该表的删除权限,如果有‘where’子句要检查对应字段是否存在,检查是否违反完整性约束。用ArrayList遍历取出content.txt中的数据,删除对应数据后重新写入content.txt中。

3.7数据表的查找

首先检查查找的命名是否正确,其次检查对应表是否存在,检查是否有查找权限,检查对应查找的字段是否存在于表中,用Arraylist从content.txt中取出要查找的元素的值。连接查询及采用n²的方法遍历查找的表,取出相同且对应的元素值。

3.8索引的创建

首先检查创建命令是否正确,其次检查对应表及对应字段是否存在,用ArrayList取出索引表content.txt中的内容,根据索引字段连成的字符串进行排序,将排序之后的内容存到该索引文件夹的content.txt中,将索引字段信息存到该文件夹的index.txt文件中,并在该表的retir.txt中存入该索引名。最后在该数据库的索引文件中存入该索引名。

3.9数据表权限的授予

首先检查授权语句是否正确,其次检查表是否存在,检查被授权用户是否存在,检查是否有授权权限。最后将授权操作和用户写入power.txt中。

3.10数据表权限的收回

首先检查授权语句是否正确,其次检查表是否存在,检查收回权限的用户是否存在,检查收回权限的用户是否为超级管理员,最后用Arraylist读取power.txt中的内容,删除对应权限后重新写入。

3.11‘Help’命令

首先检查语法是否正确,其次检查对应数据库、数据表、索引是否存在,最后按照table.txt和index.txt的顺序输出对应表或索引的字段信息。

GitHub项目链接

猜你喜欢

转载自blog.csdn.net/l1832876815/article/details/85729837