2012-11-20 141 views
0

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

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鍵,長值)

空隙接近()

回答

1

首先你必須明白這些方法是外部接口。你可能會更好地做一些事情(在自己的線程中產生長或短的對象,有實用程序庫等等)。

從類圖或其他方式開始建模。然後嘗試瞭解接口如何被使用(可能通過編寫一些詳細的用例?)。我發現CRC cards在這一步非常有用,因爲它們可以輕鬆地移動事物,同時查看單個類,等等。

當你瞭解系統時,試着找出你需要的後端功能和功能,用新類擴展你的類圖,直到你已經覆蓋了所有東西。

準備在序列圖開始時進行更改。在其餘的工作中,你可能很好地發現了你的初始模型的問題,解決這些問題通常是有用的,而不是試圖繞過它們/忽略它們。