0

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

数据库方法:

static void createDB(String dbName):
在磁盘上新建一个文件夹(即:存储为c:/dbName)这个文件夹将是数据库的根;里面将包含表和索引>(文件)

static void deleteDB(String dbName):
for(FolderName in disk folder (c:/) ) if(folderName == dbName) 从磁盘中删除

静态数据库 openDB(String dbName)

无效关闭数据库()

Table createTable(String tableName, long recordSize):
在数据库文件夹 tableName 中创建新文件 在存储记录大小的文件中创建标题 此文件是一个字节数组,记录大小将告诉我存储在 >此表中的对象有多大是。(即:如果文件总共有 105 个字节。我知道我的标题是 5 个字节,所以标题(15、25、35 ...)之后的每 >10 个字节都是我表中的一个对象

Table getTable(String tableName)
在数据库文件夹中,遍历每个文件 If(file name == tableName) Return Table(file)

void deleteTable(String tableName)
在数据库文件夹中,遍历每个文件 if(file name == tableName) remove table(file)

索引创建索引(字符串索引名称)

索引获取索引(字符串索引名称)

无效删除索引(字符串索引名称)

表方法:

long getRecordSize()
表是一个文件 (byte[]) 文件的第一行 (byte[0]) 是包含 recordSize 的 header 返回 recordSize

表文件头中的long addRecord(byte[] record)
获取记录大小和文件中对象的数量 将记录写入文件中的位置 (spot = (# of objects already in file * record size) >+ header size。 (即:如果标头大小 = 5 字节,记录大小 = 10 字节,并且我已经在 >file 中有 7 个对象......下一个对象将添加到点 (7 * 10) + 5 = 75 )

无效删除记录(长主键)

byte[] getRecord(long primaryKey)

void updateRecord(long primaryKey, byte[] 记录)

无效关闭()

索引方法:

void addKey(字符串键,长值)

IteratorgetValues(String startKey, String endKey)

长删除键(字符串键)

void updateKey(字符串键,长值)

无效关闭()

4

1 回答 1

1

首先你必须明白,这些方法都是外部接口。您可能会在幕后做更多的事情(在它们自己的线程中生成长期或短期的对象,拥有实用程序库等等)。

首先以类图或其他方式对您拥有的东西进行建模。然后尝试了解接口将如何使用(也许通过编写一些详细的用例?)。我发现CRC 卡在这一步非常有用,因为它们可以轻松移动东西,一次查看单个类等等。

当你了解系统后,试着弄清楚你需要什么后端功能和功能,用新的类扩展你的类图,直到你涵盖了所有内容。

从序列图开始时,请准备好进行更改。在剩下的工作中,您可能会很好地发现初始模型的问题,解决这些问题通常比试图解决它们/忽略它们更有用。

于 2012-11-20T15:54:14.120 回答