我的任務是設計數據庫引擎。我根本不需要實現代碼,只需要設計(僞代碼,序列圖等)。我已經獲得了這些方法,並且正在尋找任何幫助來進一步瞭解我在做什麼。以下是我到目前爲止,非常感謝任何幫助。這是一項家庭作業,而不是尋找任何答案,只是更深入地瞭解我如何更好地理解設計這個軟件。數據庫引擎設計
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鍵,長值)
空隙接近()