Output Diary

プログラミング × 読書 のアウトプットを発信しています

【Rails】ER図とは

Iphone, Iphone 6, Iphone 6プラス, アップル, 白い机, デスク, 花, 黄色の花

 


ER図とは、

「データベース設計(データモデリングで使う設計手法」のことです。

 

もっと簡単にいうと、

テーブルとテーブルを線でつないで関係性を見やすくしたものです。

 

英語では「Entity Relationship Diagram」と呼ばれています。

 

 

ER図の構成

 

ER図は、

「エンティティ」

アトリビュート

「リレーション」

「カーディナリティ」

 

と呼ばれるオブジェクトで構成されています。

 

主な記法2種類

  • IE記法
  • IDEF1X記法

主な記法はこの2つです。

 

IE記法

 

IE記法とは、リレーションが鳥の足%e3%82%ab%e3%83%bc%e3%83%87%e3%82%a3%e3%83%8a%e3%83%aa%e3%83%86%e3%82%a3-2

のような形をしていることから、別名「鳥の足記法」とも呼ばれています。

 リレーションが直感的に理解しやすいという特徴があります。

 

鳥足見たら、「あっIE記法だー!」と思い出しましょう。

 

参考記事

【ER図】鳥足どっちがどっちだっけ?IE記法でもう迷わないための考え方|ProgLearn - エンジニア・ビジネスマンに贈るお役立ち情報メディア

ER 図の Crow's Foot 記法 (IE 記法) | knooto

 

IDEF1X記法

 

IDEF1X記法とは、

アメリカの国立標準技術研究所(NIST)で作られたER図の記法です。

 

IE記法と並び世界中で使われています。

 

IE記法と異なり、リレーションを「●」などで表現します。

 

IE記法より細かい表現ができるというメリットがありますが、

その分IE記法に比べて直感的に理解しにくいというデメリットもあります。

 

 

ER図の基本ルール

ER図は、

「エンティティ」と呼ばれるデータのまとまりや

アトリビュートというエンティティの詳細情報、

エンティティ同士の関係を表現する「リレーション」

「カーディナリティ」を組合せて書きます。

 

 2つの記法の違い

 

IE記法」と「IDEF1X記法」は、

よく似た記法になっていますが、

「カーディナリティ」のルールだけが少し違います。

 

ここまで聞いて、

沢山単語がラインナップしすぎて混乱してきた

と思うので各用語の説明をしていきます。

 

エンティティ

%e3%82%a8%e3%83%b3%e3%83%86%e3%82%a3%e3%83%86%e3%82%a3

画像出典: https://it-koala.com/entity-relationship-diagram-1897

 

「エンティティ」とはデータのまとまりのことのことです。

エンティティの中に、アトリビュートという属性情報があります。

 

なんのことやらっていう人は下記の記事を参考にしてみてください。

「分かりそう」で「分からない」でも「分かった」気になれるIT用語辞典イメージぴよ画像「分かりそう」で「分からない」でも「分かった」気になれるIT用語辞典

https://wa3.i-3-i.info/word11594.html

 

アトリビュート(属性)

 

アトリビュート」とは、エンティティの中の属性情報のことです。

赤丸で囲われているものすべてがアトリビュートになります。

 

リレーション

 

「リレーション」とは、エンティティ同士の関係を表現する線のことです。

リレーションの詳細は、「カーディナリティ」という記号を使って表現します。

 

カーディナリティ(多重度)

 

日本語では「多重度」と呼ばれています。

 

「カーディナリティ」とは、

「1対1」

「1対多」

「多対多」

 

など、リレーションの詳細を表現する記号のことを意味します。

リレーションの始点と終点を、定められた記号で表現していきます。

 

カーディナリティが高いねー

カーディナリティ低いねーといった感じに使います。

 

テーブルのレコードに対して、

データの種類が少ない時はカーディナリティ低めです。

その逆が高めです。

 

<参考記事>

カーディナリティについてまとめてみた - Qiita

 

エンティティの依存関係・非依存関係

 

エンティティには依存関係・非依存関係があります。

親会社子会社のような関係です。

 

依存関係

 

「依存関係」とは、

恋愛に例えるなら、彼氏なしには生きていけないというメンヘラ女子のような感じです。そのような状態にある関係のことを依存関係といいます。

 

ちょっと違うような気もするので他の例にすると、

 

Aさんがとあるサイゼ⚪ア店で、ミラノ風ドリアを注文した時、

Aさんが頼んだ注文テーブルと注文明細テーブルは必ず紐づくはずです。

 

ここで隣のテーブルの人が食べたエスカルゴのオーブン焼きが注文明細にのっていたら「ひょへ〜」ってなりますよね。

 

Aさんの座っているテーブルで食べられた注文リストは依存関係にあります。

 

そのような関係のことを依存関係と呼びます。

 

非依存関係

 

「非依存関係」とは、

エンティティ間で「親子関係がない」リレーションのことです。

 

ER図で例えるなら、

右と左がそれぞれ独立していても成り立つやつのことをいいます。

 

 次回予告

 

書き方については次回(次次回(?))に回したいと思います。

f:id:kina_kq:20210228081810p:plain