ERの基礎知識とツールの活用法

2006年3月1日(水)
梅田 弘之(うめだ ひろゆき)

前回の復習


   前回の説明でデータモデリングツールを使った設計作業の効率化をテーマとしました。ER図のEとRの意味の解説にはじまり、表1のことが理解できたかと思います。
  • 概念モデルから論理モデル
  • 物理モデルへ展開する手法
  • フォワード/リバース機能によりトップダウン/ボトムアップを繰り返す設計作業
  • 論理モデルと物理モデルの表裏一体アーキテクチャ

表1:前回解説したこと

   前回からデータモデリング全体の利用法が理解できたかと思います。今回はデータモデリングの中身の話に入り、ERの基礎知識とツールの活用方法について解説します。データ中心設計(DOA)の基礎となるERについて、ぜひマスターしてください。


依存型リレーションと非依存型リレーション


   ERの醍醐味はリレーションです。リレーションの線がなければERはただの箱(エンティティ)の羅列で、無味乾燥したものになります。エンティティとエンティティの関係が一目であらわされることがER図の意義なのです。

   ERのリレーションには依存型と非依存型があります。親エンティティがなければ子エンティティが存在できないものが依存型リレーション、親がなくとも子が独立して存在できるものが非依存型リレーションです。

   図1はSQL ServerのサンプルデータベースNorthwindをリバースしたER図の一部です。

依存型と非依存型
図1:依存型と非依存型

   「受注」と「受注明細」の関係は、依存/非依存のどちらでしょうか。この2つは受注伝票のヘッダとボディの関係ですので、「受注」エンティティがなければ「受注明細」エンティティは存在し得ません。つまり、この2つのエンティティは依存関係にあります。

   では、「受注」と「顧客」はどうでしょうか。この2つは非依存関係となります。「受注」がなくても「顧客」データは存在できますし、「顧客」がなくても「受注」は存在できます。図1のように、ER図上では依存関係が実線、非依存関係が破線のリレーションであらわします。

   リレーション(関係)が依存型/非依存型かはモデリング上の定義ですが、実装面では主キー項目で判断することができます。依存型の場合、子の主キー項目に親の主キーが含まれます。「受注」と「受注明細」の例で見てみると、子(受注明細)の主キーに親(受注)の主キー「受注番号」が含まれていますので、依存関係であることがわかります。

   一方、非依存型の場合は親の主キー項目が子の主キー項目に含まれません。「受注」と「顧客」の例ですと、親の主キー「顧客番号」は子の非主キー部分に外部キー(フォーリンキー)として存在していますので、非依存関係ということになります。


カーディナリティ


   エンティティとエンティティの関係には、次の3種類のリレーションがあります。

  • 1対1
  • 1対n
  • n対n

表2:エンティティとエンティティの関係においての3種類のリレーション

   このような対応関係をカーディナリティと言います。簡単にいえば「あるテーブルの1レコードに対して、他のテーブルのレコードが複数存在するか」というようなものです。例えば図1の「受注」と「受注明細」の場合は、1つの受注(伝票)に対して明細行が複数存在するので1対nの関係になります。

   カーディナリティはリレーションの形状で表されます。図1の例でいえば、線の端っこが太丸ならn(多)、線のままなら1ということになります。このリレーションの形は重要です。例えば、「受注明細」側の終端が太丸でなく線のまま結合すると、「受注」と「受注明細」は1対1の関係となります。つまり、この場合は1回の受注では1品目しか注文を受けないというアプリケーションを示すのです。

   ER図のカーディナリティは、RDBMSへの実装においては内部結合と外部結合に関連します。1対1は内部結合、1対nなら外部結合に相当しますので、複数テーブルを組み合わせたSQLを作成する時の結合方法になります。


IDEF1X表記とIE表記


   ER図にはいくつかの表記法があります。図1の描き方はIDEF1X(アイデフワンエックス)と呼ばれる表記法で、著者はもっぱらこちらを使っています。これと人気を2分しているのが図2のようにn側を鳥の足のように表示すIE表記です。データモデリングツールは両方の表記をサポートしていますので、ワンタッチで切り替えることができます。

IE表記法
図2:IE表記法


著者
梅田 弘之(うめだ ひろゆき)
株式会社システムインテグレータ

東芝、SCSKを経て1995年に株式会社システムインテグレータを設立し、現在、代表取締役会長。2006年東証マザーズ、2014年東証第一部、2019年東証スタンダード上場。

前職で日本最初のERP「ProActive」を作った後に独立し、日本初のECパッケージ「SI Web Shopping」や開発支援ツール「SI Object Browser」を開発。日本初のWebベースのERP「GRANDIT」をコンソーシアム方式で開発し、統合型プロジェクト管理システム「SI Object Browser PM」など、独創的なアイデアの製品を次々とリリース。

主な著書に「Oracle8入門」シリーズや「SQL Server7.0徹底入門」、「実践SQL」などのRDBMS系、「グラス片手にデータベース設計入門」シリーズや「パッケージから学ぶ4大分野の業務知識」などの業務知識系、「実践!プロジェクト管理入門」シリーズ、「統合型プロジェクト管理のススメ」などのプロジェクト管理系、最近ではThink ITの連載をまとめた「これからのSIerの話をしよう」「エンジニアなら知っておきたいAIのキホン」「エンジニアなら知っておきたい システム設計とドキュメント」「徹底攻略 JSTQB」を刊行。

「日本のITの近代化」と「日本のITを世界に」の2つのテーマをライフワークに掲げている。

連載バックナンバー

Think ITメルマガ会員登録受付中

Think ITでは、技術情報が詰まったメールマガジン「Think IT Weekly」の配信サービスを提供しています。メルマガ会員登録を済ませれば、メルマガだけでなく、さまざまな限定特典を入手できるようになります。

Think ITメルマガ会員のサービス内容を見る

他にもこの記事が読まれています