0

私はデータベースエンジンの設計を任されています。コードを実装する必要はまったくなく、設計(擬似コード、シーケンス図など)だけです。私は方法を与えられており、私が何をしているのかをさらに理解するための助けを探しています。以下は私がこれまでに得たものです、どんな助けでも大歓迎です。これは宿題であり、答えを探すのではなく、このソフトウェアの設計をよりよく理解する方法についての洞察を深めるだけです。

DBメソッド:

Static void createDB(String dbName):
ディスク上に新しいフォルダーを作成します(つまり、c:/ dbNameとして保存されます)。このフォルダーはデータベースのルートになります。その中はテーブルとインデックスで構成されます>(ファイル)

static void deleteDB(String dbName):
for(FolderName in disk folder(c:/))if(folderName == dbName)delete from disk

静的データベースopenDB(String dbName)

void closeDB()

Table createTable(String tableName、long recordSize):
データベースフォルダー内に新しいファイルを作成しますtableNameレコードサイズを格納するファイル内にヘッダーを作成しますこのファイルはバイトの配列であり、レコードサイズはこのテーブルに格納されているオブジェクトの大きさを示しますそれは。(つまり、ファイルが合計105バイトの場合。ヘッダーが5バイトであることがわかっているため、ヘッダー(15、25、35…)の後の10バイトを超えるごとにテーブル内のオブジェクトになります。

Table getTable(String tableName)
データベースフォルダーで、各ファイルを反復処理しますIf(file name == tableName)Return Table(file)

データベースフォルダ内のvoiddeleteTable(String tableName)
、各ファイルを反復処理if(file name == tableName)remove table(file)

インデックスcreateIndex(String indexName)

インデックスgetIndex(String indexName)

void deleteIndex(String indexName)

テーブルメソッド:

long getRecordSize()
テーブルはファイル(byte [])ですファイルの最初の行(byte [0])はrecordSizeを含むヘッダーですreturn recordSize

テーブルファイルのヘッダーのlongaddRecord(byte [] record)
は、レコードサイズを取得し、ファイル内のオブジェクトの数は、ファイル内のスポットにレコードを書き込みます(spot =(すでにファイル内にあるオブジェクトの数*レコードサイズ)>+ヘッダーサイズ。 (つまり、ヘッダーサイズ= 5バイト、レコードサイズ= 10バイトで、ファイルにすでに7つのオブジェクトがある場合。..次のオブジェクトはスポット(7 * 10)+ 5 = 75に追加されます)

void removeRecord(long primaryKey)

byte [] getRecord(long primaryKey)

void updateRecord(long primaryKey、byte [] record)

void close()

インデックスメソッド:

Void addKey(String key、long value)

IteratorgetValues(String startKey、String endKey)

long deleteKey(String key)

void updateKey(String key、long value)

void close()

4

1 に答える 1

1

まず、これらのメソッドが外部インターフェイスであることを理解する必要があります。内部でさらに何かを行うこともできます (独自のスレッドで長寿命または短寿命のオブジェクトを生成する、ユーティリティ ライブラリを用意するなど)。

クラス図またはその他の方法で、持っているものをモデル化することから始めます。次に、インターフェイスがどのように使用されるかを理解しようとします (詳細な使用例をいくつか書くことでしょうか?)。CRC カードは、物事を移動したり、一度に 1 つのクラスを調べたりするのを容易にするので、このステップで非常に便利であることがわかりました。

システムを理解したら、バックエンドの機能と機能に関して何が必要かを理解しようとし、すべてを網羅するまでクラス図を新しいクラスで拡張します。

シーケンス図から始めるときは、変更を行う準備をしてください。残りの作業中に初期モデルの問題を発見する可能性が非常に高く、そのような問題を回避しようとしたり無視したりするよりも、そのような問題を解決することが役立つことがよくあります。

于 2012-11-20T15:54:14.120 に答える