2012-11-20 98 views
0

我的任务是设计数据库引擎。我根本不需要实现代码,只需要设计(伪代码,序列图等)。我已经获得了这些方法,并且正在寻找任何帮助来进一步了解我在做什么。以下是我到目前为止,非常感谢任何帮助。这是一项家庭作业,而不是寻找任何答案,只是更深入地了解我如何更好地理解设计这个软件。数据库引擎设计

DB方法:

静态无效CREATEDB(字符串DBNAME):
在磁盘上创建新的文件夹(即:存储为c:/ DBNAME) 此文件夹将是数据库的根;在其内部将包括表和索引>(文件)

静态无效deleteDB(字符串DBNAME)的:
为(在磁盘文件夹文件夹名称(C:/)) 如果(FOLDERNAME == DBNAME) 从磁盘中删除

静态数据库openDB(字符串DBNAME)

无效closeDB()

表CREATETABLE(字符串表名,长块记录):
创建数据库文件夹内的新文件的tablename 在存储记录大小的文件中创建一个头文件 该文件是一个字节数组,记录大小将告诉我该表中存储的对象有多大。 (即:如果文件总共为105个字节,我知道我的头文件是5个字节,所以在头部(15,25,35 ...)之后的每个> 10个字节都是我的表格中的对象

Table getTable(String tableName )
在数据库文件夹中,遍历每个文件 如果(文件名== TABLENAME) 返回表(文件)

空隙deleteTable(字符串表名)
在数据库文件夹中,遍历每个文件 如果(文件name == tableName) 删除表(文件)

指数的createIndex(字符串INDEXNAME)

指数getIndex(字符串INDEXNAME)

空隙deleteIndex(字符串INDEXNAME)

表的方法:

长getRecordSize()
表是一个文件(字节[]) 文件的第一行(byte [0])是包含记录大小的标头 返回记录大小

长addRecord(字节[]记录)
在表文件头中获取记录大小和文件中对象的数量 将记录写入文件中的spot(spot =(已存在文件中的对象数*记录大小)) +标题大小。 (即:如果标题大小= 5个字节,记录大小= 10个字节,并且我有7个对象在>文件中已经...。下一个对象将在点(7 * 10)+ 5 = 75)

空隙removeRecord(长的PrimaryKey)

字节[] getRecord(长的PrimaryKey)

空隙updateRecord(长的PrimaryKey加入,字节[]记录)

空隙接近()

指数的方法:

空隙addKey(String键,长值)

IteratorgetValues(字符串startKey,字符串endKey)

长DELETEKEY(String键)

空隙updateKey(String键,长值)

空隙接近()

回答

1

首先你必须明白这些方法是外部接口。你可能会更好地做一些事情(在自己的线程中产生长或短的对象,有实用程序库等等)。

从类图或其他方式开始建模。然后尝试了解接口如何被使用(可能通过编写一些详细的用例?)。我发现CRC cards在这一步非常有用,因为它们可以轻松地移动事物,同时查看单个类,等等。

当你了解系统时,试着找出你需要的后端功能和功能,用新类扩展你的类图,直到你已经覆盖了所有东西。

准备在序列图开始时进行更改。在其余的工作中,你可能很好地发现了你的初始模型的问题,解决这些问题通常是有用的,而不是试图绕过它们/忽略它们。