「データの正規化」では,非正規形のファイルを正規化する手順を学習しました。ここでは,ER図という手法により,データの構造を整理することを目的にします。
ER図,エンティティ,リレーションシップ,対応関係,1:1,1:N,M:N,親子
当社は電器の卸売業です。「売上」データを業務の観点から記述します。
エンティティ(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図があります。Eはエンティティ,Rはリレーションシップの略です。ER図には,下の左図のようにいろいろな記述法があります。
ところで,「得意先」「商品」「商品区分」「売上」の関係をER図に描くと下のようになります。リレーションシップの線は,ループにしないこと(なるべく少ない線にすること),実務的な意味を重視することが必要です。例えば,上の右図で,得意先と商品をM:Nのリレーションシップがあるとして,線で結ぶのは不適切です。
データの正規化とER図の間には密接な関係があります。正確なER図ができると,データの正規化が容易にできます。
エンティティは唯一のファイルになります。たとえば「得意先」エンティティは「得意先マスタ」になり,「商品」エンティティは「商品マスタ」になります。それで,このER図から,次のファイル群ができることがわかります(単価は商品により一定で,得意先により変化しないとします。また,売上ファイルには月日と数量が必要なことは当然でしょう)。
得意先マスタ =得意先コード +得意先名 +・・・・
商品マスタ =商品コード +商品名 +単価+・・・・
商品区分マスタ=商品区分コード+商品区分名+・・・・
売上ファイル =月日+数量+・・・・
次に,上の・・・・に何を加えればよいのかを考えます。ここで重要なのは,次の事項です。
この結果,次のようになります。これが,「データの正規化」での第3正規化の結果と同じであることを確認しておきましょう。
得意先マスタ =得意先コード+得意先名
商品マスタ =商品コード+商品名+単価+商品区分コード
商品系列マスタ=商品系列コード+商品系列名
売上ファイル =月日+数量+得意先コード+商品コード