連載
» 2009年10月09日 00時00分 公開

ゼロからのデータモデリング入門(9):データモデル正規化の目的と役割 (3/3)

[沖冠吾,株式会社アシスト]
前のページへ 1|2|3       

手順9:リレーションシップの定義
手順10:外部キーの設定

 リレーションシップを設定したエンティティ同士は、実際には親エンティティのプライマリキーを、子エンティティの外部キーとして設定することで関連付けられます。この「外部キー設定ルール」は、手順7で識別したエンティティ・タイプの組み合わせと、エンティティ間の多重度を表すカーディナリティとの組み合わせにより異なってきます。なお、カーディナリティには、表2のとおり、3つのパターン(「1:1」、「1:N」、「N:N」)があります。

●表2 外部キー設定ルール
エンティティ・タイプ カーディナリティ 設定ルール
リソース:リソース     - 対照表を作成する
リソース:イベント     1:1
    1:N
イベント系に外部キーを設定する
    N:1
    N:N
対応表を作成する
イベント:イベント     1:1
    1:N
時系列の遅い方に外部キーを設定する
    N:1
    N:N
対応表を作成する

 では、外部キーの設定に従って、いくつか例をみてみましょう。

「リソース:リソース」

 カーディナリティに関係なく、各参照先エンティティのプライマリキーを複合キーとして持つ「対照表」を作成します。通常カーディナリティが「N:N」でもない限り、「部署」から「社員」に対して、直接リレーションシップを定義されることが多いのですが、これでは、組み合わせで管理すべき情報が欠落してしまいます。さらに、管理すべき情報が「時間的要素項目」や「数量的要素項目」の場合、対照表はイベント系エンティティとして定義できるわけですが、それらも作業者の経験則による判断により見過ごされることになってしまいます。

●図6 「リソース:リソース」 ●図6 「リソース:リソース」

「リソース:イベント」が「1:N」の場合

 イベント系エンティティがリソース系エンティティを参照する、最もポピュラーな組み合わせです。今回の正規化対象の場合、「顧客」と「受注」、「従業員」と「受注」がこのパターンとなります。なお、外部キーの挿入先は、エンティティの独立性が「(N)」の場合には、プライマリキー側、「(U)」の場合には非キー側となります。

●図7 「リソース:イベント」が「1:N」の場合 ●図7 「リソース:イベント」が「1:N」の場合

「イベント:イベント」が「N:1」の場合

 ここで注意したいのは、カーディナリティだけに着目した「製造」から「受注」への間違ったリレーションシップ定義です。時系列さえ正しくとらえることができれば、ビジネスの流れと参照関係が逆転してしまうことはないでしょう。

●図8 「イベント:イベント」が「N:1」の場合 ●図8 「イベント:イベント」が「N:1」の場合

ビジネス活動を意識したER図の作成を

 このようにエンティティとリレーションシップで表現するには一定のルールがあり、ルールに則った作成が必要となります。

 今回は、アシストが提唱する正規化技法である正規化簡便法をベースに正規化についてお話ししましたが、本来の目的である「ビジネスをER図で表現する」際に、効率よく、しかも品質のよいER図を作成するには、なんらかの方法論に基づいた技法を採用することをお勧めします。正規化により作成された最適化により1つのER図へ統合していきます。

 次回は、統合されたER図を検証する安定性検証についてお話しします。


前のページへ 1|2|3       

Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。