ER図は概念データモデルを表現する図として広く用いられている手法です。ですがこの辺り初めはとっつきにくく、よくわからない単語の応酬です。その辺りを少しずつかみ砕いて、自分なりに整理していきたいと思います。
今回はER図を構成するエンティティ(Entity)とリレーションシップ(Relationship)についてです。
そもそも概念データモデルとは
概念データモデルを表したものがER図とありますが、そもそも概念データモデルって何なんでしょう。
データベースを構築するにあたり、データ構造(どんなデータをどんな形式で扱うか)は非常に重要なポイントです。ここの情報をしっかり詰めてドキュメントとして残しておかないと、データ構造がめちゃくちゃになって使えないデータベースになったり、運用・保守ができなくなります。ここでまず作るのが概念データモデルです。
概念データモデルとは、対象世界(実際の私たちの世界)の情報構造を抽象化して表現したものです。世の中にはデータとして表現できる事柄がたくさんあります。それらを可視化し、またデータの関係性を同時に表したものが概念データモデルです。
例えば以下は大学における概念データモデルを一部切り取った例です。大学には学生と教授という2種類の人物が存在(実際にはもっと多くの役柄がありますが、)します。また彼らには居住地があるため、住所とも結びつきます。
実際には学生の所属学部や教授の開講授業、所属サークルや部活動といったように、さらに様々なデータが関係してきます。
実際にこれらのデータを保管するためにデータベースを用いることになります。なので最終的には用いるデータベースのルールに合わせた設計をする必要がありますが、概念データモデルを起こす時点では、特定のDBMS製品に依存することなく平準化されたルールのもと表現することができます。
ER図
ER図とは実世界をエンティティ(Entity:実体)とリレーションシップ(Relationship:関連)でモデル化した図です。概念データモデルの表記法としても用い、上記概念データモデルの例もER図です。
エンティティ
エンティティとは、対象の事物を概念としてモデル化したものです。エンティティは属性をいくつか持ちます。また、必要に応じてデータ制約(ユニーク制約や参照制約)が定義されます。
例えば、住所エンティティは国や都道府県といった属性を持ちます。
一方、これら属性に特定の値を持ったものをインスタンスと呼びます。エンティティの実現値がインスタンス、インスタンスを抽象化した概念がエンティティです。え、わかりにくいって?
つまるところエンティティとは抽象的なものでしかありません。こういうデータ項目が必要だよねといったレベルの情報しかもっていないのがエンティティです。一方インスタンスはそれらデータ項目の具体的な値を持ったもの(日本の東京都港区…)です。
データベースでいうところのテーブルがエンティティ、インスタンスはその中の特定のレコードです。
リレーションシップ
リレーションシップとはその名の通りエンティティ間の関係性(結びつき)を表します。インスタンス間に何等かの参照関係が存在するとき、両エンティティはリレーションで結ばれます。
以下の例を見てみます。授業エンティティと学生エンティティには関係性はなく、それらだけをつなぎ合わせることはできません。しかし、そこに履修エンティティが加わることで、授業エンティティと学生エンティティはつながりを持つことができます。例えば「ある学生が履修した授業名」を導きだすことができるのです。
このリレーションシップによって、各エンティティをつないだデータべースを作成することができます。このようなデータベースをリレーショナルデータベースと呼びます。
リレーションシップにはいくつか関係性の種類があり、1対1や1対多、多対多といったものがあります。これらについては別記事で紹介します。
DBについてより学ぶ
データベース、SQLについて、書籍を通してより深く知ることができます。ネットでも情報は手に入りますが、書籍も是非検討してみてください^^
まとめ
ER図の基本として、概念データモデルおよぶエンティティとリレーションシップについて整理しました。名称がわかりにくく取り掛かりにくいかもしれませんが、掘り下げていけばエンティティがあってそれらがどのように関わりあっているかということにすぎません。
ただ、規模が大きくなるほどその関係性も複雑になっていくんですけどね(汗
まずは基本を理解することで、難しい構造も紐解いていけるようになると思います。
ではでは👋