リレーションシップを設定したエンティティ同士は、実際には親エンティティのプライマリキーを、子エンティティの外部キーとして設定することで関連付けられます。この「外部キー設定ルール」は、手順7で識別したエンティティ・タイプの組み合わせと、エンティティ間の多重度を表すカーディナリティとの組み合わせにより異なってきます。なお、カーディナリティには、表2のとおり、3つのパターン(「1:1」、「1:N」、「N:N」)があります。
エンティティ・タイプ | カーディナリティ | 設定ルール |
---|---|---|
リソース:リソース | - | 対照表を作成する |
リソース:イベント | 1:1 1:N |
イベント系に外部キーを設定する |
N:1 N:N |
対応表を作成する | |
イベント:イベント | 1:1 1:N |
時系列の遅い方に外部キーを設定する |
N:1 N:N |
対応表を作成する | |
では、外部キーの設定に従って、いくつか例をみてみましょう。
カーディナリティに関係なく、各参照先エンティティのプライマリキーを複合キーとして持つ「対照表」を作成します。通常カーディナリティが「N:N」でもない限り、「部署」から「社員」に対して、直接リレーションシップを定義されることが多いのですが、これでは、組み合わせで管理すべき情報が欠落してしまいます。さらに、管理すべき情報が「時間的要素項目」や「数量的要素項目」の場合、対照表はイベント系エンティティとして定義できるわけですが、それらも作業者の経験則による判断により見過ごされることになってしまいます。
イベント系エンティティがリソース系エンティティを参照する、最もポピュラーな組み合わせです。今回の正規化対象の場合、「顧客」と「受注」、「従業員」と「受注」がこのパターンとなります。なお、外部キーの挿入先は、エンティティの独立性が「(N)」の場合には、プライマリキー側、「(U)」の場合には非キー側となります。
ここで注意したいのは、カーディナリティだけに着目した「製造」から「受注」への間違ったリレーションシップ定義です。時系列さえ正しくとらえることができれば、ビジネスの流れと参照関係が逆転してしまうことはないでしょう。
このようにエンティティとリレーションシップで表現するには一定のルールがあり、ルールに則った作成が必要となります。
今回は、アシストが提唱する正規化技法である正規化簡便法をベースに正規化についてお話ししましたが、本来の目的である「ビジネスをER図で表現する」際に、効率よく、しかも品質のよいER図を作成するには、なんらかの方法論に基づいた技法を採用することをお勧めします。正規化により作成された最適化により1つのER図へ統合していきます。
次回は、統合されたER図を検証する安定性検証についてお話しします。
Copyright © ITmedia, Inc. All Rights Reserved.