Database 数据库引擎设计
我的任务是设计一个数据库引擎。我根本不需要实现代码,只需要设计(伪代码、序列图等)。我已经得到了这些方法,我正在寻找任何帮助来进一步了解我正在做什么。以下是我到目前为止得到的,非常感谢您的帮助。这是一个家庭作业,不是寻找任何答案,只是了解如何更好地理解设计这个软件 数据库方法: 静态void createDB(字符串dbName):Database 数据库引擎设计,database,database-design,sequence-diagram,Database,Database Design,Sequence Diagram,我的任务是设计一个数据库引擎。我根本不需要实现代码,只需要设计(伪代码、序列图等)。我已经得到了这些方法,我正在寻找任何帮助来进一步了解我正在做什么。以下是我到目前为止得到的,非常感谢您的帮助。这是一个家庭作业,不是寻找任何答案,只是了解如何更好地理解设计这个软件 数据库方法: 静态void createDB(字符串dbName): 在磁盘上创建新文件夹(即:存储为c:/dbName) 此文件夹将是数据库的根目录;其中包括表和索引>(文件) 静态void deleteDB(字符串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(字符串键,长值) 无效关闭()
首先,您必须了解这些方法是外部接口,您可以在幕后做更多的事情(在自己的线程中生成长寿命或短命的对象,拥有实用程序库等等) 首先以类图或其他方式对您拥有的进行建模。然后尝试了解接口将如何使用(可能通过编写一些详细的用例?)。我发现这一步非常有用,因为它们可以方便地移动对象,一次查看单个类,等等 当您了解系统时,尝试找出您在后端功能和函数方面需要什么,用新类扩展您的类图,直到涵盖了所有内容 当您开始使用序列图时,请做好进行更改的准备。在接下来的工作中,您很可能会发现初始模型存在问题,解决这些问题通常是有用的,而不是试图解决它们/忽略它们