1、用Java语言建立数据库表。

(1) 数据文件和字典文件存储结构和存取方法为按行存取,数据为字符型可直接阅读。

(2) 属性的个数任意,属性的类型包括整数int,字符串varchar,双精度浮点double。

(3) 表的相关信息存入数据字典。

2、为关系表插入元组。

(1) 用VALUES子句为新建立的关系插入元组。

(2) 用VALUES子句在关系模式修改之后按照新的模式插入元组。

(3) 不指定属性,插入元组的所有属性值;

(4) 插入元组的指定属性的值。

(5) 修改相应的索引文件。

3、实现属性的添加和删除功能。

(1)为基本表添加属性并维护数据字典。

4、实现表中元组的删除和修改功能,维护索引文件。

(1)实现删除数据库记录的功能。

a) 没有WHERE条件,删除关系中的所有元组。

b) 指定WHERE条件,删除满足条件的元组。

(2)实现修改数据库记录的功能。

a) 没有WHERE条件,修改所有元组的指定属性的值。

b) 指定WHERE条件,修改满足条件的元组的指定属性的值。

(3)修改相应的索引文件。

5、实现表的删除功能。

(1)删除表并维护数据字典。

(2)删除相应的索引文件。

6、索引的创建、维护与删除

(1)为关系表的所有属性建立稠密索引(文件路径+文件行号)。

(2)使用java类库的treeMap(红黑树实现)存储索引项。

(3)实现数据增删改时索引的维护功能。

(4)实现数据增删改查时,从索引树中索引所需的数据文件,提高数据操作效率。

(5)可控制文件行数,默认:lineNumConfine = 10;每插满10行,新建数据文件。

7、实现显示数据库表的功能。

(1)实现“SELECT * FROM 表名”。

(2)显示表的结构和内容。

8、查询优化:

(1)实现启发式关系代数优化算法。(对原始的语法树进行优化处理,生成查询计划,选择代价最小的。)

9、查询执行:

(1)、实现单关系的投影操作(select 属性名列表 from 关系名)。

(2)、实现单关系的选择操作(select * from 关系名 where 条件表达式)。

(3)、实现单关系的选择和投影操作(select 属性名列表 from 关系名 where 选择条件)。//选择条件是指“属性名 操作符 常量”形式的条件

(4)、实现多个关系的选择、投影和连接操作(select 属性名列表 from 关系名列表 where 条件表达式)。

(5)、实现两个关系和多个关系的连接操作(select * from 关系名列表 where 连接条件)。//连接条件是指“属性名 操作符 属性名”形式的条件

(6)、实现多个关系的选择、投影和连接操作(select 属性名列表 from 关系名列表 where 条件表达式)。

10、用户权限

(1)、创建用户、设置密码,并写数据字典;

(2)、为用户授权,并写数据字典(grant admin to userName;);

(3)、用户进行任何数据库操作前,要根据数据字典进行权限验证;

(4)、撤销用户权限,并修改数据字典(revoke admin from userName;)。