プログラミングマガジン

プログラミングを中心にIT技術をできるだけわかりやすくまとめます。

  • ホーム
  • データベース
  • 【データベース】ER図の基礎知識(見方等)、ツール、DBスペシャリストでのER図
 
 
     
  • サーバー言語  
    • Python
    • Ruby
    • PHP
    • SQL
  •  
  • インフラ  
       
    • AWS
    •  
    • 基本
    • Git
  • Web
       
    • Web開発
    • JavaScript
    • Vue.js
    • React
  •  
  • 設計  
       
    • 実装設計
    • DB設計
  • 問い合わせ
  

【データベース】ER図の基礎知識(見方等)、ツール、DBスペシャリストでのER図

04.28

  • miyabisan2
  • コメントを書く

この記事は2分で読めます

ER図とは?

テーブル間の関連を見やすくした図のことです。

中小規模の開発であれば、数十個のエンティティになりますし、大規模システムであれば、数百個のエンティティになったりもします。

そんな莫大な数のエンティティ同士の関係を助けもなしに理解するのは、常人には困難です。

そのため、正規化されて複雑化したテーブル構成の中で、システム構造を早く把握するのに図を作るのは最適な手法になります。

ER図の表記方法

ER図には、下記二つの表記があります。

表記法 説明
IE(Information Engineering) ジェームズ・マーチンという方が開発した。
IDEF1X アメリカ空軍が開発した。

表記方法

基本的なこと

要素 説明
四角の上の項目(USER_MASTER) 「エンティティ名」を示します。
四角の中の項目(USER_ID、DEPT_NO等) 「属性」を示します。
四角の中の一番上の要素(USER_ID) 「主キー」を表します。

多重度(カーディナリティについて)

テーブル間の関係を示す場合は下記のように表記します。

項目 説明
1
0または1
多
多(0以上)
多(1以上)

利用例

例えば、「ユーザーテーブル」と「認証情報テーブル」で言えば、必ず1:0または1になるので、下記のようなリレーションになります。

ER図を作成するには?

有料版であれば

Visio

フリー版

wwwsqldesigner

  • Webアプリ(JavaScriptベースで動いている。)
  • 出来上がったER図から、SQLの作成も可能。

A5:SQL Mk-2

  • 既存DBからER図を作成できる。
  • 出来上がったER図から、SQLの作成も可能。
  • テーブル定義書の自動生成機能がある。(Excel形式)

「A5:SQL Mk-2」の始め方については、下記の記事で解説しています。

【データベース】「A5:SQL Mk-2」を使ってみる。(Oracleの接続設定等)

SchemaSpy

  • Javaで出来てるので、動かすのにJREが必要。
  • コマンドラインからER図を作れる。
  • 既存DBからER図を自動生成できる。

参考:DBスペシャリストのER図

エンティティ(エンティティタイプ)

対象物をモデル化したものです。試験では「エンティティタイプ」と表現されています。

多重度

1:1

例
  • 見積(1):契約(1)

1:多

矢印の元が1で、矢印の先が多になります。基本はこれになります。

例
  • 部署(1):社員(多)
  • 見積(1):分割契約(多)
  • 複数見積(多):1活契約(1)

多:多

原則第三正規系までは行うのでこれはあまり使われることはありません。もし、この関係になった場合は中間テーブルを設けて1:多の関係にし直すことがほとんどです。(これを連関エンティティと呼びます。)

例
  • 1つの注文で複数の商品を紐付けれるし、1つの商品を複数回の注文に分けて販売する。

オプショナリティ

表記 多重度 相手のインスタンス 説明
1 必須ではない 相手インスタンスは0または1、例えば、「受注」と「発注」のように「受注」したからと言ってすぐに「発注するわけでない」場合等に使います。
1 必須である 相手インスタンスは必ず1、例えば部署と社員であれば社員は必ずどこかの部署に所属するので部署側に黒丸がつきます。
多 必須ではない 相手インスタンスは0以上
多 必須である 相手インスタンスは1以上、「受注」と「受注明細」のように必ずどちらも存在する前提の場合等に使用されます。

リレーションシップパターン

リレーションシップには特殊なパターンがいくつか存在するので抑えておきましょう。

自己参照

自エンティティを参照する場合もあります。

例
  • シリーズ物の作品で第1作目への作品コードを保持したい場合

複数リレーションシップを行うパターン

複数のリレーションを張るパターンもあります。

例
  • 親テーブルに品目テーブルがあって、子テーブルには「親品目カラム」と「子品目カラム」というように同じテーブルを参照する場合
スポンサーリンク
  • 2018 04.28
  • miyabisan2
  • コメントを書く
  • データベース
  • Tweets Twitter
  • このエントリーをはてなブックマークに追加
  • LINEで送る

関連記事

  1. 2021 10.03

    【データベース】テーブル設計:アンチパターン「EAV」

  2. 2018 06.21

    【PostgreSQL】特徴、バージョン、データベース、スキーマの基本

  3. 2020 12.12

    【データベース】バッチ処理の排他制御

  4. 2018 04.22

    【Java】JDBCをWebアプリで使う場合で考慮すること(データソースなど)

  5. 2021 11.06

    【データベース】メモリの種類(「データキャッシュ」と「ログバッファ」など)

  6. 2020 12.13

    【データベース】「顧客テーブル」のテーブル設計

  • コメント ( 0 )
  • トラックバック ( 0 )
  1. この記事へのコメントはありません。

  1. この記事へのトラックバックはありません。

返信をキャンセルする。

【データベース】主キー、ユニークキーについて

【データベース】トランザクションが競合しないための仕組…

RETURN TOP

著者プロフィール

エンジニア歴10年で過去に業務系、Webデザイン、インフラ系なども経験あります。現在はWeb系でフロントエンド開発中心です。

詳細なプロフィールはこちら

スポンサーリンク

カテゴリー

  • Android
  • AngularJS
  • API
  • AWS
  • C++
  • CSS
  • cursor
  • C言語
  • DDD
  • DevOps
  • Django
  • Docker
  • Figma
  • Git
  • GitLab
  • GraphQL
  • gRPC
  • Hasura
  • Java
  • JavaScript
  • Kubernetes
  • Laravel
  • linux
  • MySQL
  • Next.js
  • nginx
  • Node.js
  • NoSQL
  • Nuxt.js
  • Oracle
  • PHP
  • Python
  • React
  • Redux
  • Rspec
  • Ruby
  • Ruby on Rails
  • Sass
  • Spring Framework
  • SQL
  • TypeScript
  • Unity
  • Vue.js
  • Webサービス開発
  • Webデザイン
  • Web技術
  • インフラ
  • オブジェクト指向
  • システム開発
  • セキュリティ
  • その他
  • データベース
  • デザインパターン
  • テスト
  • ネットワーク
  • プログラミング全般
  • マイクロサービス
  • マイクロソフト系技術
  • マルチメディア
  • リファクタリング
  • 副業
  • 未分類
  • 業務知識
  • 生成AI
  • 設計
  • 関数型言語
RETURN TOP

Copyright ©  プログラミングマガジン | プライバシーポリシー