第一マイルストーンに対するデータベースインタフェース
以下の定義をもとにして定義する。
型は参考程度
未割当のというのは、「IDをプロパティから取り除いた」ということを意味する。
table:IRecordDataBase
機能名 仕様 入力->出力
register 与記録をDBに保存する。 未割当の記録 -> 割り当てられた記録のID searchRecordsWith タグを用いて、そのタグを持つ記録を検索する タグID集合 -> 記録集合
fetch 与えられたIDに対応する記録の詳細を返す。 記録ID -> 記録
delete 与IDに対応する記録を削除する。 記録ID -> void
table:IPrerecordDataBase
機能名 仕様 入力->出力
fetch 与IDに対応する審査前記録の詳細を返す。 審査前記録ID -> 審査前記録
delete 与IDに対応する審査前記録を削除する。 審査前記録ID -> void
table:ITagDataBase
機能名 仕様 入力->出力
register 与タグをDBに記憶する。 未割り当てのタグ -> タグID resolveID 与タグIDの名称を指定された言語で返す。 (タグID, 指定言語) -> 文字列
searchTagCandidates 渡された検索文字列に部分一致するタグを列挙する。 (検索文字列, 指定言語) -> タグID一覧 なぜ直接データベースを使わず、データベースとの中間層にインタフェースを作るのか?
必要とされている機能を見出し、適切な論理モデルを作るため。 もしFirestoreから乗り換えるようなことがあっても、
別のデータベースのシステムからこのインタフェースを満たすようなデータベース操作クラスを作ってしまえば、APIの全体の改造を避けられる。
必要なデータ構造を見極めるため。
自然言語で記述し直した。
これにより、定義に必要な程度で幅を持たせた。