ER図は、データベースを扱う上で非常に重要な「設計図」です。このガイドでその核心を掴み、自在に使いこなせるようになりましょう。
ER図(Entity-Relationship Diagram)は、その名の通り**「何が(Entity)」「どう関係しているか(Relationship)」**を視覚的に表現した図です。家を建てる前に設計図が必要なように、データベースを作る前にはER図でデータの構造を設計します。
ER図を構成する基本的な3つの要素を覚えましょう。
「実体」と訳され、管理したいデータのまとまりを指します。データベースの「テーブル」に相当し、通常は四角形で表現されます。
エンティティが持つ個別の情報項目です。データベースの「カラム」に相当します。
エンティティ同士の関係性を示し、線で表現されます。この関係性を定義するために、後述するキーが重要な役割を果たします。
ER図を理解するには、データベースの基本的な用語との対応を知ることが不可欠です。
(PK)
のように明記されます。(FK)
と明記されます。重要なポイント: 外部キーのカラム名と、それが参照する主キーのカラム名は必ずしも同じである必要はありません。しかし、両者のデータ型(例:数値、文字列)は必ず一致している必要があります。
ガイドの例を見てみましょう。「1つのフィードバックに対して複数のボタンが存在する」という関係は、ER図で次のように表現できます。
フィードバックマスター (テーブル)
フィードバックボタン (テーブル)
フィードバックボタン
テーブルにあるフィードバックID (FK)
が、フィードバックマスター
テーブルのフィードバックID (PK)
と繋がることで、「どのフィードバックに属するボタンか」という関係性が生まれます。これは典型的な**「1対多」**の関係です。
正規化とは、データの重複をなくし、矛盾が起きないようにテーブルを整理整頓するプロセスです。ガイドにある通り、「大きいテーブルを論理的な理屈に基づいて細かく分割していく作業」とイメージしてください。
例えば、1つの注文テーブルに顧客情報も商品情報もすべて詰め込むと、同じ顧客が何度も注文するたびに氏名や住所が重複して記録されます。もしその顧客が引っ越した場合、過去の全注文データの住所を修正する必要があり、修正漏れや入力ミス(更新異常)の原因になります。
正規化を行うことで、顧客情報は「顧客テーブル」に1つだけ保持し、注文テーブルからはその顧客IDを参照するだけで済むようになります。
通常、第三正規形までを目指します。
ER図と正規化の関係: 正規化はテーブルを分割するプロセスです。そしてER図は、その分割されたテーブル間の関係性を可視化するためのものです。両者は切っても切れない関係にあり、セットで学ぶことが不可欠です。
注意点: 正規化を進めすぎるとテーブルが細分化されすぎ、かえってデータの取得が複雑になったり、処理速度が低下したりすることがあります。そのため、通常は第三正規形までが実用的とされています。
CRUD(クラッド)は、データに対する基本的な4つの操作の頭文字です。
システム開発の見積もりにおいて、ER図は絶大な力を発揮します。
設計されたER図(=テーブル一覧)があれば、各テーブルに対してどのようなCRUD操作が必要かを洗い出すことができます。
例えば、「顧客」テーブルには、顧客情報を「新規作成」「一覧表示」「詳細表示」「更新」「削除」する機能が必要だと分かります。このように、テーブルごと、ひいてはシステム全体で必要な機能の数を網羅的に把握できるため、開発工数の正確な見積もりに繋がるのです。
しかし、どのようなアプローチであれ、最終的にデータを保存する構造(データベース)は必要です。そのため、既存システムの構造を理解したり、データ中心の機能を改修したりする場面では、ER図とCRUDの知識が今もなお必須のスキルとなっています。