Database 数据库引擎设计

Database 数据库引擎设计,database,database-design,sequence-diagram,Database,Database Design,Sequence Diagram,我的任务是设计一个数据库引擎。我根本不需要实现代码,只需要设计(伪代码、序列图等)。我已经得到了这些方法,我正在寻找任何帮助来进一步了解我正在做什么。以下是我到目前为止得到的,非常感谢您的帮助。这是一个家庭作业,不是寻找任何答案,只是了解如何更好地理解设计这个软件 数据库方法: 静态void createDB(字符串dbName): 在磁盘上创建新文件夹(即:存储为c:/dbName) 此文件夹将是数据库的根目录;其中包括表和索引>(文件) 静态void deleteDB(字符串dbName):

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

数据库方法:

静态void createDB(字符串dbName):
在磁盘上创建新文件夹(即:存储为c:/dbName) 此文件夹将是数据库的根目录;其中包括表和索引>(文件)

静态void deleteDB(字符串dbName):
对于(磁盘文件夹(c:/)中的文件夹名) if(folderName==dbName) 从磁盘中删除

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

void closeDB()

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

表getTable(字符串tableName)
在数据库文件夹中,遍历每个文件 If(文件名==表名) 返回表(文件)

void deletetetable(字符串tableName)
在数据库文件夹中,遍历每个文件 if(文件名==表名) 删除表(文件)

索引createIndex(字符串indexName)

索引getIndex(字符串indexName)

void deleteIndex(字符串索引名)

表格方法:

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

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

无效删除记录(长主密钥)

字节[]getRecord(长主键)

void updateRecord(长主键,字节[]记录)

无效关闭()

索引方法:

Void addKey(字符串键,长值)

IteratorgetValues(字符串开始键、字符串结束键)

长deleteKey(字符串键)

void updateKey(字符串键,长值)

无效关闭()


首先,您必须了解这些方法是外部接口,您可以在幕后做更多的事情(在自己的线程中生成长寿命或短命的对象,拥有实用程序库等等)

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

当您了解系统时,尝试找出您在后端功能和函数方面需要什么,用新类扩展您的类图,直到涵盖了所有内容

当您开始使用序列图时,请做好进行更改的准备。在接下来的工作中,您很可能会发现初始模型存在问题,解决这些问题通常是有用的,而不是试图解决它们/忽略它们