インデックスをはる参考資料となるCRUD図

CRUD図はインデックスをはるテーブルを見つけるのに便利

CRUD図は、画面ごとにアクセスするテーブルおよび、テーブルに対する操作をまとめた資料となります。
そして、CRUD図は、テーブルに対する操作を一覧でまとめているため、DB設計でインデックスをはるテーブルおよび、カラムを選択する際にあると便利な資料となります。

CRUD図とは

CRUD図は、画面ごとにアクセスするテーブルおよび、テーブルに対する操作をマトリクス形式で記載した資料です。
横軸に画面、縦軸にテーブル名を記載し、画面ごとに各テーブルに対して行う操作を"C"、"R"、"U"、"D"の文字を使用している記載していきます。

なお、"C"、"R"、"U"、"D"のそれぞれの文字が表すテーブルへの操作は以下の通りです。

  • C:テーブルへのデータ登録
  • R:テーブルに登録されているデータの参照
  • U:テーブルに登録されているデータの更新
  • D:テーブルに登録されているデータの削除

CRUD図の例

画面名/テーブル名 商品マスター 顧客マスター 伝票テーブル 伝票詳細テーブル
会員登録画面 C
会員情報変更画面 RU
商品検索画面 R
注文画面 R R C C
注文取消し画面 R RD RD

上記例では、会員登録画面は顧客マスターの列に"C"が記載されています。
そのため、会員登録画面では、顧客マスターへデータの登録を行うことがわかります。

また、縦軸で見た場合、商品マスターは全ての行で空欄または、"R"のみの記載となっています。
そのため、商品マスターは画面からのデータの登録、更新、削除が行われないこととなります。

インデックスについて

インデックスは、リレーショナルデータベースでテーブルの検索のパフォーマンスを向上させるための機能です。
そのため、テーブルにインデックスをはることでシステムのパフォーマンスを向上させることが可能です。

しかし、インデックスが正しくはられていない場合、逆にパフォーマンスが劣化してしまうことがあります。

インデックスによるパフォーマンスの向上

インデックスによるパフォーマンスの向上が見込めるテーブルおよびカラムは以下の通りとなります。

《テーブル》

  1. 主にデータの参照で使用されるテーブル(データの登録、更新があまり行われないテーブル)
  2. テーブルのデータ量が非常に多いテーブル

データの登録や更新を行う場合、データの登録または更新時にインデックスの貼り直しが行われます。
そのため、インデックスをはったテーブルは、登録、更新のパフォーマンスが劣化する場合があります。
(更新の場合は、インデックスをはった列以外の列に対する更新であれば問題ない)

また、テーブルのデータ量が少ない場合は、テーブルのフルスキャンの方がパフォーマンスが有利になります。
データ量が少ないテーブルへのインデックスのはりつけは、A41枚の資料にわざわざ目次のページを1枚添付するようなものです。

《カラム》

  1. 登録されるデータの種類が多く、そして データの重複が少ないカラム(バラバラなデータが登録されるカラム)
  2. 抽出条件や結合条件に使用されるカラム

CRUD図からインデックスをはるテーブルを探す

CRUD図は、画面ごとのテーブルの操作を一覧でまとめております。
そして、インデックスをはる場合は、データ量が多く、データ参照が中心となっているテーブルを探す必要があります。

そのため、インデックスをはることでパフォーマンス向上が期待できるテーブルを探す場合は、CRUD図を縦方向に見ていくことで該当のテーブルを探しやすくなります。

また、ある特定の画面のパフォーマンス向上のために、テーブルにインデックスをはった場合に、逆にパフォーマンスが劣化する可能性がある画面の洗い出しも可能です。
そして、インデックスをはることでパフォーマンスが劣化する可能性がある画面を洗い出すことで、パフォーマンスの劣化がシステムとして許容できるかどうかの議論が可能となります。

例えば、パフォーマンスの劣化の可能性がある画面が、初期導入時に登録したら二度と更新しないような画面のみであれば、無視しても問題ないという判断も可能です。

なお、テーブルにインデックスをはることで影響がある画面は、インデックスをはるテーブルを縦方向に見ていき、"C"、"U"、"D"が記載された行の画面となります。

データベースに関する本

達人に学ぶDB設計 徹底指南書 初級者で終わりたくないあなたへ

達人に学ぶDB設計 徹底指南書 初級者で終わりたくないあなたへ

【初めてでもできる】実践的データベース設計法

【初めてでもできる】実践的データベース設計法

その他