👏

[DB設計]ER図について

2023/02/13に公開

これが上手くできる人ほど年収が高いらしい!笑

土台になるER図に関してです。

ER図 (Entity Relationship Diagram)とは

[ 英単語直訳意味 ]
entity : 実在、存在、実在物
Relationship: 繋がり
Diagram : 図形、図式、図解

  • データベース設計(データモデリング)で使う設計手法。
  • データベース設計の基本中の基本!これがないとDB設計はできない!
    このソフトを使用して作成していく!!

https://app.diagrams.net/

<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(ゼロ)
鳥の足

カーディナリティ(cardinary) :多重度について考える

多重度とは

二つのエンティティ間の、 「片方のエンティティから見て、相手のエンティティはいくつあるか」を表すもの。
多重度は一般的に、1対1 / 1対多 / 多対多 の3種類あるが、
以下のようにもう少し細分化して書くのが良い!

Discussion