ビジネス・オブジェクトの単一カーディナリティー関係

単一カーディナリティー関係では、親ビジネス・オブジェクト内の属性が 1 つの 子ビジネス・オブジェクトを表します。この場合、その属性は、その子ビジネス・オブジェクトと同じタイプです。アダプターは、 単一カーディナリティー関係と、所有権のない単一カーディナリティー関係およびデータをサポートします。

単一カーディナリティー関係

通常、単一カーディナリティーの子ビジネス・オブジェクトを含むビジネス・オブジェクトには、関係を表すための属性が 2 つ以上含まれます。1 つの属性のタイプは、子ビジネス・オブジェクトのタイプと同じになります。もう 1 つの属性は、子の基本キーを、外部キーとして親に格納するための単純属性です。親には、子に含まれる基本キー属性と同数の外部キー属性が含まれます。

関係を設定する外部キーが親に保管されるため、各親には特定のタイプの子ビジネス・オブジェクトを 1 つだけ格納できます。

『典型的な単一カーディナリティー関係』の図に、一般的な単一カーディナリティー関係を示します。この例では、ParentBOName ボックス内の FKey は、子の基本キーを含む単純属性であり、同様に、ParentBOName ボックス内にある Child(1) は、子ビジネス・オブジェクトを表す属性です。

図 1. 典型的な単一カーディナリティー関係
この図では、左側に ParentBOName という列見出しの下に行が 3 行ある 1 列のボックスが
あります。3 行のラベルはそれぞれ
PKey、FKey、および Child(1) です。このボックスから、1 列からなる右側のボックスに
矢印が伸びています。ChildBOName という列見出しの下に
行が 1 行あります。この行の名前は ChildPKey です。矢印は、最初のボックスの FKey から 2 番目の
ボックスの ChildPKey に伸びています。

親ビジネス・オブジェクトは、単一カーディナリティーの OWNERSHIP の子と、単一カーディナリティーの NOOWNERSHIP の子を持つことができます。参照テーブルは NOOWNERSHIP 関係に 使用します。

単一カーディナリティー関係および所有権のないデータ

通常、各親ビジネス・オブジェクトは、その親ビジネス・オブジェクトに含まれる子ビジネス・オブジェクトの内部のデータを所有しています。例えば、各 Customer ビジネス・オブジェクトが Address ビジネス・オブジェクトを 1 つ含んでいる場合に、新しいカスタマーが作成されると、Customer テーブルと Address テーブルの両方に新しい行が 1 行挿入されます。挿入された新しい住所は、その新しいカスタマーに固有です。同様に、Customer テーブルからカスタマーを削除すると、Address テーブルからそのカスタマーの住所も削除されます。

ただし、複数の階層ビジネス・オブジェクトに同一のデータが含まれており、どのビジネス・オブジェクトもそのデータを所有していない場合があります。例えば、Address ビジネス・オブジェクトに StateProvince[1] 属性があり、これが単一カーディナリティーの StateProvince 参照テーブルを表しているとします。この参照テーブルは、ほとんど更新されることがないものであり、住所データからは独立して保守されています。このため、住所データの作成または変更により、この参照テーブル内のデータが影響を受けることはありません。アダプターは、既存の都道府県名を検出するか、検出に失敗するかのいずれかです。この参照テーブル内の値を追加または変更することはありません。

複数のビジネス・オブジェクトに同一の単一カーディナリティーの子ビジネス・オブジェクトが含まれている場合、各親ビジネス・オブジェクトの外部キー属性では、関係が NOOWNERSHIP に指定されていなければなりません。アプリケーション・サーバーからアダプターに、階層ビジネス・オブジェクトが Create、Delete、または Update 要求とともに送信された場合、アダプターは所有関係にない単一カーディナリティーの子を無視します。アダプターは、このようなビジネス・オブジェクトに対しては、Retrieve 操作のみを実行します。このような単一カーディナリティーのビジネス・オブジェクトの検索に失敗した場合、アダプターはエラーを戻して処理を停止します。

非正規化データおよび所有権のないデータ

所有関係を伴わない包含関係には、静的参照テーブルの使用を容易にするだけでなく、正規化データと非正規化データを同期化するという別の機能があります。

正規化データから非正規化データへの同期: 関係を NOOWNERSHIP に指定すると、正規化アプリケーションから非正規化アプリケーションへの同期化を行うときに、データを作成または変更することができます。例えば、正規化されたソース・アプリケーションが、A と B という 2 つのテーブルにデータを格納するものとします。また、非正規化されている宛先アプリケーションでは、1 つのテーブルにすべてのデータが格納され、エンティティー A のそれぞれにエンティティー B のデータが重複して格納されるものとします。

この例では、テーブル B のデータの変更をソース・アプリケーションから宛先アプリケーションに同期化するには、テーブル B のデータが変更されるたびにテーブル A のイベントを起動する必要があります。さらに、テーブル B のデータはテーブル A に重複して格納されているので、テーブル A の行ごとに、テーブル B で変更されたデータが含まれるビジネス・オブジェクトを送信しなければなりません。

注: 非正規化されたテーブルを更新する場合、1 行を更新した結果複数の行が変更されることがないように、レコードごとに固有キーを持たせるようにしてください。 そのようなキーが存在しない場合、 Adapter for JDBC では複数レコードが更新されたことを示すエラーが 発生します。

非正規化データから正規化データへの同期: 非正規化されているソース・アプリケーションから正規化されている宛先アプリケーションにデータを同期化する場合、アダプターは、正規化されているアプリケーションに含まれる所有関係にないデータに関しては、作成、削除、または更新を行いません。

正規化されているアプリケーションにデータを同期化する場合、アダプターは、所有関係にない単一カーディナリティーの子をすべて無視します。そのような子のデータを作成、除去、または変更するには、データを手動で処理する必要があります。


ご利用条件 |


(c) Copyright IBM Corporation 2005, 2006.
(C) Copyright IBM Japan 2006
このインフォメーション・センターでは Eclipse テクノロジー (http://www.eclipse.org) が採用されています。