CRUDの意味を図や具体例を使って解説!【データベースやWebアプリ開発の基本】
こんにちは!
今井(@ima_maru)です。
アプリ開発やシステム開発をするうえで非常に重要な「CRUD」という概念について解説します。
実はすごく簡単な単語なので、サクッと覚えていきましょう。
それでは解説に移ります。
CRUDの意味とは?データベース・SQLにもある4つの機能のこと
CRUD(クラッド)とは、データに対する「作成」「読み取り」「更新」「削除」という4つの機能のことを指しています。(登録機能・参照機能・更新機能・削除機能とも)
- C:データを作成する(Create)
- R:データを読み取る(Read)
- U:データを更新する(Update)
- D:データを削除する(Delete)
「Create」「Read」「Update」「Delete」の頭文字をとって「CRUD」(クラッド)というわけです。
4つそれぞれの機能を順にみていきましょう。
Create(作成する)
Createは、データの作成機能のことです。
この機能がなければデータは作成されることはなく、使い物になりません。
ブログでいえば記事の投稿、Twitterでいえばツイートの投稿を想像するとわかりやすいでしょう。
SQLでいう「INSERT」に当たります。
INSERT INTO user VALUES (1, 'imai', 'imai@example.com');
Read(読み取る)
Readは、データの読み取り機能のことです。
この機能がなければ、データを作成しても見ること・参照することが出来なくなってしまいます。
ブログでいえば記事の閲覧、Twitterでいえばツイートの閲覧のことですね。
SQLでいう「SELECT」に当たります。
SELECT name, email FROM user;
Update(更新する)
Updateは、データの更新機能のことです。
この機能がなければ、データは作った瞬間から削除されるまで変更が出来なくなります。
ブログでいえば記事の更新のことです。
Twitterはツイートの更新を許可していないので、ツイートに対するUpdateの機能はありません。(Twitterの投稿データのようにあえてUppdate機能をつけない場合もある)
SQLでいう「UPDATE」に当たります。
UPDATE user SET email='imai.engineer@example.com' WHERE name = '今井';
Delete(削除する)
Deleteは、データの削除機能のことです。
この機能がなければ、データの削除を行うことが出来ないので、データは何らかの形で残り続けることになります。(Updateもなければ、同じデータが一生残り続ける)
ブログでいえば記事の削除、Twitterでいえばツイートの削除のことですね。
SQLでいう「DELETE」に当たります。
DELETE FROM user WHERE name = '今井';
CRUD図とは?
CRUD図とは、機能とデータの対応表のようなもので、CRUD分析で使用される図のことです。
実際に見ていただいたほうが分かりやすいでしょう。
データA | データB | データC | |
---|---|---|---|
機能1 | C | RU | R |
機能2 | R | R | |
機能3 | U | RU | |
機能4 | D | U | R |
機能5 | C | C | |
機能6 | D | U | |
機能7 | D |
このように、「どの機能が」「どのデータに対して」「CRUDのどの機能を有しているか」をまとめた図をCRUD図といいます。
CRUD図は次に紹介するCRUD分析で使われます。
CRUD分析とは?なぜシステム設計において重要なのか?
CRUD分析とは、CRUD図などを用いて各データにCRUDの機能が正しく設定されているかを分析する作業です。
簡単に言えば、CRUD図を使ってデータに対してCRUDがしっかり用意されているかを確認することです。
例えば、以下のようなCRUD図があったとします。
データA | データB | データC | |
---|---|---|---|
機能1 | C | RU | R |
機能2 | R | R | |
機能3 | U | RU | |
機能4 | D | U | R |
機能5 | C | ||
機能6 | U | ||
機能7 | D | ||
OK | Dがない | Cがない |
この時、データAはCRUDの全機能揃っていることが分かりますが、データBは「Delete」が足りておらず、データCは「Create」が足りていないことが分かります。
このように、CRUD図を用いることで各データにCRUDが正しく設定されているのかが良くわかるでしょう。
この図の場合だとまだまだ簡単ですが、大規模システムの場合、もっともっとデータや機能が増えてきます。
そのため、CRUD図を使いCRUD分析を行うことは、データの取り扱いという点で非常に大きな役割を果たすのです。
ほかにも、運用や保守の観点からCRUD分析を行う場合があります。
CRUDの4つの機能は全て揃っていないといけないのか?
データ対して必ずしもCRUDの4つの機能「作成」「読み取り」「更新」「削除」がないといけないのでしょうか?
結論から言えば、「CRUDが全て揃っている必要はない」と言えます。
例えばTwitterの場合、ツイートは一度投稿するとツイート内容の変更はできません。
これはCRUDの中の「Update」ができないということになります。
つまりツイートというデータに対してはUpdateの機能を用意していないのです。
その理由としては、以下のようなことが考えられるでしょう。
- 大量のリツイートがあったツイートをスパムツイートに編集できる
- 後から情報を書き換えられるため、ツイートの信頼性がなくなる(ニュースなどで取り扱えない)
- 編集は高頻度で使用される可能性が高く、サーバーに負荷がかかる
このように、Updateの機能をなくすことは、データの信頼性やサーバー負荷などの観点から役立つ場合があります。
ほかにも、Deleteの機能をなくす例として「仮想通貨の取引データ」があります。
一度行われた取引を削除することは「データの改ざん」になりますからね。
しかし、Deleteができないという点で、ブロックチェーンがEUのデータ保護法だとか何とかに引っかかってた気がします。(個人情報などを後から削除できないから?)
CreateとReadは必須のように思います。(反例があれば教えていただきたいです。)
- そもそもデータが作成されなければ何もできないので、Createについては必須
- Readがない場合はデータが読み取れないので、Readも必須そう(反例ありそう、暗号とか?)
まとめると、CRUDはデータに対する基本的な機能ではありますが、全てを揃っていなくても良い場合があるということです。
この記事のまとめ
最後にこの記事の内容をまとめて終わりとします。
- CRUDの意味とは?データに対する以下の4つの機能のこと
- Create(作成する)
- Read(読み取る)
- Update(更新する)
- Delete(削除する)
- CRUD図とは?
- 機能とデータの対応表のようなもの
- CRUD分析で使用される図
- CRUD分析とは?
- CRUD図などを用いて各データにCRUDの機能が正しく設定されているかを分析する作業
- システム設計において、データの取り扱いという点で大きく貢献する
- CRUDの4つの機能は全て揃っていないといけないのか?
- CRUDが全て揃っている必要はない
- あえてUpdateやDeleteを付けない場合もある
以上「CRUDの意味を図や具体例を使って解説!【データベースやWebアプリ開発の基本】」でした!
最後までご覧いただきありがとうございます。