目次
1,ER図とは
ER図とはデータベース設計者や開発者が使用する図で、データベース内の関係を視覚的に表現します。データの構造を可視化し、関係を明確にするために使用され、設計や開発の基礎となります。専用ツールやソフトウェアを使って作成され、データベースの要件や変更点を文書化し、他の関係者と共有することができます。ER図は効果的なデータベースシステムの構築を支援し、データの正確な設計を行うための重要なツールです。
2,ER図に関しての基本知識
ER図を書く前にいくつか基本知識を知っておかなければなりません。この項ではその知識について解説いたします。
ER図の種類
ER図は概念ER図・論理ER図・物理ER図の種類があり、概念ER図→論理ER図→物理ER図の順番で基本的に作成されます。
概念ER図はデータベース内に保管したい箱・作業単位で抽象的に図示したものです。
論理ER図は概念ER図に詳細化してそれぞれの項目に対してデータの中身(アトリビュート)を追加したものです。
物理ER図は論理ER図を実際のデータベースの構造に合わせて記載したものです。
詳細はデータモデリングの記事をお読みください。
今回の例は物理ER図を例としています。
エンティティ
エンティティとはデータベース内にある情報の箱のことです。
顧客データの箱、注文データの箱というようにカテゴリごとに情報を格納します。ER図というのはこのエンティティとエンティティの関係性を明示することです。
アトリビュート(属性)
アトリビュート(属性)とはエンティティの中身です。
例えば、顧客エンティティの中には顧客IDや顧客名、性別、年齢などの情報が格納されていることが多いと思います。
主キー(PK:primary key)
アイデンティファイアとも呼ばれ、エンティティ内にある情報一つ一つに被りが出ないように定めるために使用されます。
例えば、顧客エンティティで考えると、顧客IDを主キーにすると顧客ID「0001」に対して1人のAさんという情報が格納されます。これにより顧客ID「0001」であればAさんである、顧客ID「0002」であればBさんであるというように識別ができます。
また、顧客ID「0001」が2つ存在するなどは決してあってはならず主キーには一意性があります。
また、主キーはできるだけ少ない数で構成し(最小性)、主キーの値は変更する必要がないような設計をしなければなりません(不変性)
外部キー(FK:Foreign Key)
サロゲートキーとも呼ばれ、テーブル内のアトリビュート(属性)が別エンティティの主キーを参照する際に使用されます。そのため、データの整合性を保持する必要があり、削除・更新時に反映されるように設定しなければ、データベースが整合性を保てず品質低下につながります。
また、外部キーがあるものに関しては基本的に依存関係を持っていると認識して問題ありません。(依存関係については下記に記載)
リレーション
リレーションとはエンティティとエンティティの関係を示す線のことです。
一般的には線のことを言いますが、状況によってはエンティティとエンティティの間に発生しているイベントのこと(例:購入する、発送するなど)をリレーションという場合があります。
依存関係と非依存関係
依存関係とは一方のエンティティが無ければもう一方のエンティティが成り立たなくなる関係性のことです。顧客と注文の関係で考えると、顧客は顧客のエンティティのみで成り立ちますが、注文は顧客がいない限り発生しません。このような状態を依存関係であるといいます。他エンティティに依存しているエンティティは角を丸くして記述されます。
オプショナリティ
オプショナリティとはエンティティ間で、一方のエンティティのレコードがもう一方のエンティティとの関係を持つか否かを示す記号です。すなわちAエンティティに対してBエンティティは必須であるかどうかということです。例えば従業員エンティティと部署エンティティについて考えてみます。従業員は部署に所属することが必須とすると、従業員エンティティに対して部署エンティティは必須である。ということになります。
カーディナリティ(多重度)
カーディナリティとは多重度とも呼ばれ、関連するエンティティ間の対応する数の関係を示すものです。例えば顧客テーブルと注文テーブルについて考えてみます。1つの顧客は複数の注文を持つことができます。しかし1つの注文が複数の顧客を持つことはありません。したがって、顧客対注文は1対多ということになります。
3,ER図の書き方
ER図の書き方の一般的に主流なものはIE記法が挙げられます。その他にはIDEF1X記法やUMLなどが挙げられます。
それぞれ記載方法が異なるのでそれぞれのルールに従った描画が必要です。今回はIE記法について解説します。
どのような情報単位で持ちたいかを決める
プロジェクトのスコープや要件を基に、どういう単位で情報を持ちたいかを決めることでエンティティを特定します。
下記の図ではエンティティとしてCustomers(顧客)とOrders(注文)が特定されています。
この時点で概念ER図がほぼ完成しているイメージです。
情報の中身を決定する
エンティティの中身を決定します。
論理ER図においてはエンティティの中身を決め、主キー外部キーなどを決定します。
また物理ER図においては、論理ER図のデータの中身に加えて、データの型やデータのサイズ、空白を許すか否かなども決定します。まず、データ型については整数型、浮動小数点型、文字列型、日付時刻型、ブール型など様々です。例えば文字型はOracleだとCHAR,NCHAR、PostgreSQLだとVARCHAR,TEXTなどが使用されます。DBMS(データベース管理システム)によって使用されるものが変わるので使用しているDBMSに合ったデータ項目を記載しましょう。
次にデータのサイズですがデータ型の後ろに(50)のように何文字以内のデータであるということを決定します。(50)であれば50文字以内のデータであるということです。しかし一部のデータベース管理システムでは設定しなくとも自動的に決定される場合があります。最後に空白値を許すか否かですが、空白値を許す場合は基本的に何も書かなくてよいです。しかし、空白値を許さない場合は「NOT NULL」のように記載する必要があります。
エンティティ同士の関係性を整理する
エンティティとエンティティの関係を整理してエンティティ間にリレーション線を引きます。
依存関係と非依存関係の整理もここで行います。
今回は顧客と注文のテーブルのみなのでリレーションは簡単に引けましたが、実際は複数テーブルある中から関係を整理するため、複雑になります。
エンティティとエンティティの関連する数を示す
定義したリレーションのカーディナリティ(多重度)はどれぐらいであるかを示します。
一方のエンティティからもう一方のエンティティに対して、最低何個以上の関連を持つか(最小カーディナリティ)、最大何個までの関連を持つか(最大カーディナリティ)を示し、エンティティ同士の関係性を明確にします。
意味 | IE記法 |
0 | 〇 |
0以上 | |
1 | |
1以上 | |
0または1 | |
多 |
このようにしてカーディナリティは設定されます。
以上の方法に則り、ER図は作成されます。
4,無料で使えるER図作成ツール
Excel
ExcelでER図を作成することができます。Excelは広く普及しているため、多くの人が使いこなせるでしょう。しかし、最低限のER図しか作成できず複雑なER図を書く場合は手間がかかるためおすすめはしません。
draw.io
draw.ioはWebベースの無料ER図作成ツールです。今回の記事のER図はこちらのdraw.ioで作成されています。直感的で使いやすくファイル保存・共有が容易で使いやすいのが特徴です。しかし、オフライン編集などは制限があるので注意が必要です。
Gliffy
GliffyもWebベースの無料ER図作成ツールです。Gliffyは多くのカスタマイズオプションがあるので、プロフェッショナルなデザインや大規模プロジェクトの際に有用であるかと考えられます。
コメント