Web教材一覧データベース

ER図

学習のポイント

データの正規化」では,非正規形のファイルを正規化する手順を学習しました。ここでは,ER図という手法により,データの構造を整理することを目的にします。

キーワード

ER図,エンティティ,リレーションシップ,対応関係,1:1,1:N,M:N,親子


当社は電器の卸売業です。「売上」データを業務の観点から記述します。

  1. 当社の「得意先」は,[コダマ電器]や[リラックス]などがある。
  2. 当社は,[目立テレビ]や[HALパソコン]などの「商品」を取扱っている。
  3. [目立テレビ]や[アニーテレビ]などは[テレビ],[HALパソコン]や[不二パソコン]などは[パソコン]というように,それぞれの「商品」は唯一の「商品区分」に属する。
  4. 当社は,得意先へ商品の「売上」を行う。

エンティティ

エンティティ(Entity)とは,システム化対象業務において管理すべき実体です。具体的には,「得意先」「商品」「商品区分」「売上」など,上の文中で「 」で囲んだものです。エンティティは一般的に名詞になります。なお,「得意先」や「商品」のような物理的なモノだけでなく,「売上」のような見えないものもエンティティになります。
 [ ]で囲んだものは,エンティティの具体的な例であり,インスタンスといいます。

リレーションシップ

リレーションシップ(Relationship)とは,エンティティ間の関連のことです。次のように,リレーションシップは一般的に動詞になります。

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

上の動詞の意味は重要ではありません。「AはいくつかのBを持ち,Bは唯一のAに属する」という表現にできましょう。このの関係は,「Bが決まればAが一意に決まる」関係と同じです。このような関係にあるとき,
  AとBには,1:Nの対応がある
  AはBのである(BはAのである)
といいます。子が決まれば親が決まるのですから,親は子に従属していることになります。

     1(親)    N(子)
     商品区分    商品
     得意先     売上
     商品      売上

このような対応をカーディナリティ(多重度)といいます。重要なものは次の3つです。
  1:1の対応・・・部と部長,社員とその住所
  1:Nの対応・・・上述
  M:Nの対応・・・店舗と商品
がありますが,実際に最も重要なのは1:Nの対応です。

ER図

エンティティとリレーションシップを図示する図法にER図があります。Eはエンティティ,Rはリレーションシップの略です。ER図には,下の左図のようにいろいろな記述法があります。

   

ところで,「得意先」「商品」「商品区分」「売上」の関係をER図に描くと下のようになります。リレーションシップの線は,ループにしないこと(なるべく少ない線にすること),実務的な意味を重視することが必要です。例えば,上の右図で,得意先と商品をM:Nのリレーションシップがあるとして,線で結ぶのは不適切です。

ER図による正規化ファイルの作成

データの正規化とER図の間には密接な関係があります。正確なER図ができると,データの正規化が容易にできます。
 エンティティは唯一のファイルになります。たとえば「得意先」エンティティは「得意先マスタ」になり,「商品」エンティティは「商品マスタ」になります。それで,このER図から,次のファイル群ができることがわかります(単価は商品により一定で,得意先により変化しないとします。また,売上ファイルには月日と数量が必要なことは当然でしょう)。

   得意先マスタ =得意先コード +得意先名 +・・・・
   商品マスタ  =商品コード  +商品名  +単価+・・・・
   商品区分マスタ=商品区分コード+商品区分名+・・・・
   売上ファイル =月日+数量+・・・・

次に,上の・・・・に何を加えればよいのかを考えます。ここで重要なのは,次の事項です。

  1. 親より上の先祖,子および子孫のことは,一切考えない。
    • 商品区分は売上の親の親,売上は商品区分の子の子なので,商品区分と売上とは互いに無関係であり,そこの項目は一切持たない。
    • 商品区分は商品の親なので,商品区分マスタには商品の項目は一切持たない。
    • 商品と得意先は売上の親であるから,売上の項目は一切持たない。
  2. 子のファイルには,親のコードを入れ,それ以外の親の項目は一切持たない。
    • 商品は商品区分の子だから,商品マスタには,商品区分コードが必要である。
    • 売上は,得意先と商品の子なので,売上ファイルの項目には,得意先コードと商品コードが必要である。

この結果,次のようになります。これが,「データの正規化」での第3正規化の結果と同じであることを確認しておきましょう。

   得意先マスタ =得意先コード+得意先名
   商品マスタ  =商品コード+商品名+単価+商品区分コード
   商品系列マスタ=商品系列コード+商品系列名
   売上ファイル =月日+数量+得意先コード+商品コード


理解度チェック: 正誤問題
過去問題