こんにちは。管理人のPaZooです。
最近、めっきり寒くなりました。とうとう冬ですわ。
久しぶりにブログを更新しました。本当にいつぶりなのかもう記憶にもございませんです。
しかもAdvent Calendar1日目に、ER図についてのネタを持ってくるという…
うん、まあいいでしょ。うんうん。誰も怒らんし。
さて、今回のネタは「ER図」についてです。
私が参画している現場ではER図に触れる機会は全くと言っていいほどありません。
しかし、いざ現場で開発をやるうえでは知っておくべき知識のひとつであることは間違いないです。
今回は、私がざっくり「ER図」について学んだことを整理するためにまとめた記事です。
ER図の書き方や作成ツール、ER図から物理データベースを構築する方法はまた別の機会にご紹介したいと思います。
ER図とは
「ER図(英:entity relationship diagram)」とは、データベース設計における代表的な設計図のようなものです。
ER図はDOA(データ中心アプローチ)の技法です。
DOA(データ中心アプローチ)とは何かといいますと、システムの扱うデータの構造や関係を定義しそれに合わせて処理や手順の流れを決めていく方式のことを指します。
作成したER図は、そのまま物理データベース上に変換できることからデータベース設計手法におけるスタンダードなものとなっています。
ER図を書くメリット
エンジニアの中には、「データベース設計はテーブル設計書だけで作る」という方もいたり「設計を行わずにデータベースを構築する」という方もいると思います。
しかし、ER図を書くメリットとして「運用・保守フェーズで役立つ」ことを挙げさせていただきます。
システムは一度構築すれば終わり、というわけにはいきません。長い間稼働しながら改修を繰り返していきます。
ER図を整理することで、システム全体の構成が把握できますし、かつ品質の高いプログラムを製造することが可能です。
また、テーブル数が多くなれば設計ミスやプログラマが仕様を理解できないリスクが増大し不具合や後戻りのコストが発生してしまいます。
ER図を知っておくことで設計者以外でも設計内容を把握し、仕様変更などの改修に素早く対応できるようにしておきたいですね。
ER図の種類
ER図には、概念データモデル、論理データモデル、物理データモデルの3種類があります。
ER図の説明
ここでちょっとだけ寄り道します。
ER図を構成するために必要な「エンティティ」と「リレーションシップ」の役割について説明します。
エンティティ
エンティティとは、情報の対象となる物を概念としてモデル化したものです。
エンティティは、いくつかの属性(項目)を持っておりそれぞれの属性にはデータ制約(ユニーク制約や参照制約など)が定義されることがあります。
エンティティ内の属性に値が入ったものを「インスタンス」と呼びます。
エンティティは「概念」、インスタンスは「実体」と考えると覚えやすいかと思います。
リレーションシップ
リレーションシップは、業務上発生するエンティティ間の結びつきのことを指します。
二つのエンティティに含まれる属性の間で、何らかの参照関係が存在すると両エンティティはリレーションシップで結ばれるという感じです。
リレーションシップでつながれたエンティティ間は属性情報を並べて表現することができます。分かりにくい表現なので、下の図で説明をします。
「担当」エンティティが「社員」エンティティと「顧客」エンティティをつないでますね。
先ほど、上で申し上げた「エンティティ間の結びつき」というのが表現されています。このように、リレーションシップを使うことで、各テーブルをつないだデータベースを作ることができます。
リレーションシップには、今回の例で挙げた「1対1」だけでなく、「1対多」や「多対多」などありますので別の機会に詳しくお話しできればと思います。
概念データモデルと論理・物理データモデルの違い
さて、ここから概念データモデルの話に戻ります。
概念データモデルは、オブジェクトをシンボル化することで大まかに分類したものですが、論理・物理データモデルはデータベースに情報を追加するために必要なプロセスなどの詳細を表します。
概念データモデルでは、それぞれのエンティティを抽出したらエンティティ同士にリレーションシップを定義するので、トップダウンのモデリングによって作成されます。
対して、論理データモデルでは具体的な属性を付与したりリレーションシップを修正したりして概念データモデルよりもさらに詳細化したものです。
概念データモデルがトップダウンと表現されることに対して、ボトムアップのモデリングによって作成されます。
論理データモデルを作成したら、RDBに実装ができるように物理データモデルに落とし込んでいきます。
具体的には、属性のデータ型を定義したり、リレーションシップを基に属性の値に制約を設定したりします。
このように、ER図では段階的に考えながらデータベース設計ができることが特長となっています。
まとめ
今回は概念データモデルとER図についてお話させていただきました。
難しいかと思われた方もいるかと思いますが、理解してしまえば地理の地図のような感覚で見ることができます。(例えが特殊ですが)
これからもER図について学んだことをブログに書いていきますので、興味がある方は見てくださると励みになります。