[DB設計]ER図について
これが上手くできる人ほど年収が高いらしい!笑
土台になるER図に関してです。
ER図 (Entity Relationship Diagram)とは
[ 英単語直訳意味 ]
entity : 実在、存在、実在物
Relationship: 繋がり
Diagram : 図形、図式、図解
- データベース設計(データモデリング)で使う設計手法。
- データベース設計の基本中の基本!これがないとDB設計はできない!
このソフトを使用して作成していく!!
<ER図を書くメリット>
- 後戻りのコストを防げる
- 運用・保守フェーズで役立つ
⇒ ER図を残しておくことで、設計者以外の方でも設計内容を把握し、仕様変更可能に!
データモデリングとは
ERは、データベース設計(データモデリング)で使う設計手法と記述したわけだが…。
データモデリングとは、データに関する要件の明確化や、実装範囲の決定を目的に、データモデルを作成すること。
各工程で作成するER図の状態のこと。
データモデルには、 概念モデル/論理モデル/物理モデルの3つがある。
-
概念モデル : 要件定義工程で作成するデータモデルのこと。
エンティティ、リレーションシップの二つを定義、概要を表したもの -
論理モデル : 基本設計工程で作成するデータモデルのこと。
アトリビュート、主キー、外部キーの定義や、リレーションシップ、カーディナリティといった要素を追加したもの。 -
物理モデル : 詳細設計工程で作成するデータモデル
データ型を追加したり,ER図の最終形態となるもの。
ER図の種類
- 10種類以上あるが、現在の主流は2種類。
⇒ 「IE記法」と「IDEF1X記法」
IE記法 (Information Engineering / 別名:鳥の足記法)
<特徴>
- リレーションが直感的に理解しやすい.
IDEF1X記法
<特徴>
- リレーションを「●」などで表現すること.
- IE記法より細かい表現ができる(直感的な分かりやすさは低)
ER図を見やすくするテクニック
- 親エンティティは左上から書くこと。
⇒ 親のエンティを左に置き、そこを基準に子のエンティティは右に。
同じ親を持つエンティティは上下に並べると見やすい - リソースエンティティとイベントエンティティで色分けをする
リソースエンティティ:マスタ系のテーブル
イベントエンティティ:トランザクションを管理するテーブル
ER図基本要素
<簡易表>
要素 | 意味 | 補足 |
---|---|---|
エンティティ(Entity) | データのまとまりのこと. | |
アトリビュート(attribute) | エンティティの中の属性情報のこと | これもそれぞれFKなど記法がある |
リレーション(relation) | エンティティ同士の関係を表現する線のこと | |
カーディナリティ(cardinary)多重度 | リレーションの詳細を表現する記号のこと。 | 二つに細分化できて、カーディナリティとオプショナリティに分かれる。! |
エンティティ(Entity)
データのまとまりのこと.
エンティティには2種類あり、非依存実体と依存実体に分けられる.
- 非依存関係
他のエンティティに依存せずに存在できるエンティティのこと。 - 依存関係
他のエンティティに依存して存在するエンティティのこと。
この二つは枠の形を少し変えて書く。非依存実体は四角形の記号で表し、依存実体は角の丸い四角形で表記。
ここでの "依存"とは
リレーションされるエンティティに親子関係があるのか、ないのかということ。
アトリビュート(attribute)
エンティティの中の属性情報のこと。PK,FKの表記をすること。
リレーション(relation)
エンティティ同士の関係を表現する線のこと
⇒ リレーションの詳細は、「カーディナリティ」という記号を使って表現.
カーディナリティ(cardinary) 多重度
リレーションの詳細を表現する記号のこと。
( ⇒ IE記法とIDEF1X記法では、このカーディナリティの表現方法が異なる。)
これは二つに細分化できて、カーディナリティとオプショナリティに分かれる。
- カーディナリティ(cardinality)
エンティティから近い方に書く
関連付くインスタンスの最大数を表す
- オプショナリティ(optionality)
エンティティから遠い方に書く
関連付くインスタンスの最小数を表す
カーディナリティ(cardinary) にはこの三つの記号があり、組み合わせて表現する。
記号 | 意味 |
---|---|
○ | 0(ゼロ) |
| | 1 |
鳥の足 | 多 |
カーディナリティ(cardinary) :多重度について考える
多重度とは
二つのエンティティ間の、 「片方のエンティティから見て、相手のエンティティはいくつあるか」を表すもの。
多重度は一般的に、1対1 / 1対多 / 多対多 の3種類あるが、
以下のようにもう少し細分化して書くのが良い!
Discussion