CRUD図の読み方と書き方

CRUD図とは、システムの各機能が、どのエンティティ(テーブル)に対して、どのような操作をするかを一覧化したものである。 CRUD表またはCRUDマトリックスとも呼ばれる。 操作の種類には生成(Create)、参照(Read)、更新(Update)および削除(Delete)がある。 要求の分析に当たって、データとプロセス(データの作成、読取り、更新、削除)の対応関係を検証する。

データモデル表現の標準的手法であるERモデルは静的モデルであるため、データが生成されたり、更新されたりするタイミングを表現できない。CRUD図はそれを補完する存在となる。

DBのSQL操作表

CRUD図は機能とデータの作成、参照、更新、削除を表形式で表す。

CRUD図の書き方の例を示す。

CRUD図
Figure 1. CRUD図のサンプル

エンティティ(データ)と機能が交差するマトリックスにCRUDの記号を記述する。CRUD表のマトリックスで使われる記号の意味を次の表に示す。

CRUD表で使われる記号
記号意味
C データが作成(Create)されることを表す。
SQLINSERTMERGE に相当する。
R データが参照(Read)されることを表す。
SQLの SELECT に相当する。
U データが更新(Update)されることを表す。
SQLの UPDATEMERGE に相当する。
D データが削除(Delete)されることを表す。
SQLの DELETETRUNCATE TABLE に相当する。

CRUD図には標準化された規格がなく、その書き方にはさまざまなバリエーションがある。CRUD図の書き方のバリエーションを示す。

CRUD図
Figure 2. CRUD図のサンプル
CRUD図
Figure 3. CRUD図のサンプル

CRUD分析

CRUD分析とは、CRUD図を用いてデータのライフサイクルを分析することをいう。CRUD分析を行うことで、データの保存期間や障害時のリカバリーポイントを決めることができる。

システムの運用において、障害時のリカバリーのために、データをバックアップメディアに保存する。バックアップメディアの容量を無制限に利用できる訳ではないため、バックアップデータの保存期間を決める必要がある。バックアップデータの保存期間を決定するにあたり、CRUD分析を活用して、データのライフサイクルからバックアップデータの適切な保存期間を決定する。

システムに障害が発生した場合、バックアップメディアに保存したデータからリカバリー(データ復旧)を行う。データの復旧が行える地点のことをリカバリーポイントという。リカバリーポイントを多くすると、障害によって失われるデータが少なく済むが、データのバックアップ頻度が高くなるため、バックアップメディアに必要な容量が大きくなる。適切なリカバリーポイントを決定するにあたり、CRUD分析を活用して、データのライフサイクルから適切なリカバリーポイントを決定する。

論理削除

レコードを削除するには、CRUDのDELETE操作を行う。本当にレコードを削除する代わりに、削除フラグというカラム(列)を設けて TRUE または 1 を設定したものを削除済みレコードと見なす方法を「論理削除」という。英語ではSoft deleteまたはLogical deleteという。論理削除はレコードを物理的に削除しないシステムである。意味的には削除となるが、実際には更新であるため、CRUD表では「D」ではなく「U」として扱う。

JIS

CRUD図 は JIS (Japanese Industrial Standards) で規格化されていない。

ISO

CRUD図 は ISO (International Organization for Standardization) で規格化されていない。

Excel

Microsoft Excelで使えるCRUD図の雛型をダウンロードできます。

CRUD.xlsx

自動生成

CRUD図を自動生成できるツールを以下に示す。

HTTPメソッドのCRUD

CRUD はデータベースに限った概念ではなく、HTTP メソッドにも CRUD の概念が取り入れられている。

HTTPメソッドのCRUD
CRUD HTTPメソッド
CREATE POST, PUT
READ GET
UPDATE PUT
DELETE DELETE

HTTP メソッドにおける POST はリソースを作成するため、CRUD における CREATE に相当する。

HTTP メソッドにおける GET はリソースを取得するため、CRUD における READ に相当する。

HTTP メソッドにおける PUT はリソースを更新するため、CRUD における UPDATE に相当する。ただし、POST で代用されることが多い。

HTTP メソッドにおける DELETE はリソースを削除するため、CRUD における DELETE に相当する。ただし、POST で代用されることが多い。