【发布时间】:2012-11-20 15:42:05
【问题描述】:
我的任务是设计一个数据库引擎。我根本不需要实现代码,只需要设计(伪代码、序列图等)。我已经获得了这些方法,并且正在寻找任何帮助以进一步了解我在做什么。以下是我到目前为止所得到的,非常感谢任何帮助。这是一项家庭作业,不是在寻找任何答案,只是想更深入地了解如何更好地理解设计这个软件。
数据库方法:
静态 void createDB(String dbName):
在磁盘上创建一个新文件夹(即:存储为 c:/dbName) 该文件夹将是数据库的根目录;里面将包含表和索引>(文件)static void deleteDB(String dbName):
for(磁盘文件夹中的文件夹名称 (c:/) ) 如果(文件夹名称 == 数据库名称) 从磁盘中删除静态数据库 openDB(String dbName)
void closeDB()
表创建表(字符串表名,长记录大小):
在数据库文件夹 tableName 中创建新文件 在存储记录大小的文件中创建一个标题 这个文件是一个字节数组,记录大小会告诉我存储在>这个表中的对象有多大。 (即:如果文件总共有 105 个字节。我知道我的标题是 5 个字节,所以标题(15、25、35 ...)之后的每 >10 个字节都是我表中的一个对象Table getTable(String tableName)
在数据库文件夹中,遍历每个文件 如果(文件名 == 表名) 返回表(文件)void deleteTable(String tableName)
在数据库文件夹中,遍历每个文件 如果(文件名 == 表名) 删除表(文件)索引创建索引(字符串索引名称)
Index getIndex(String indexName)
void deleteIndex(String indexName)
表格方法:
长 getRecordSize()
表是一个文件(字节[]) 文件的第一行 (byte[0]) 是包含 recordSize 的标头 返回记录大小long addRecord(byte[] 记录)
在表文件的标题中获取文件中的记录大小和对象数 将记录写入文件中的位置 (spot = (# of objects already in file * record size) >+ header size. (i.e: if header size = 5 bytes, record size = 10 bytes and I have 7 objects in >文件已经......下一个对象将添加到位置 (7 * 10) + 5 = 75 )void removeRecord(long primaryKey)
byte[] getRecord(long primaryKey)
void updateRecord(long primaryKey, byte[] 记录)
无效关闭()
索引方法:
Void addKey(String key, long value)
IteratorgetValues(String startKey, String endKey)
long deleteKey(字符串键)
void updateKey(字符串键,长值)
无效关闭()
【问题讨论】:
标签: database database-design sequence-diagram