リモートデータベースがデータを共有していない場合、データ分割は切断となります。たとえば、各営業担当者には独自の顧客セットがあり、他の営業担当者と顧客を共有していません。
次の例では、3 つのテーブル Customers、Contacts、SalesReps に、営業担当者と顧客間の対話に関する情報が格納されています。各営業担当者は、複数の顧客に対して販売活動を行います。連絡先が 1 箇所だけの顧客もいれば、複数ある顧客もいます。
次の表では、Customers、Contacts、SalesReps の各データベーステーブルについて説明します。 これらのテーブルの詳細については、データ分割の切断を参照してください。
テーブル | 説明 | テーブル定義 | ||
---|---|---|---|---|
Contacts |
会社と取引があるすべての個別の連絡先。連絡先はそれぞれ 1 人の顧客に属します。Contacts テーブルには、次のカラムがあります。
|
|
||
Customers |
会社と取引があるすべての顧客。Customers テーブルには、次のカラムがあります。
|
|
||
SalesReps |
社内のすべての営業担当者。SalesReps テーブルには、次のカラムがあります。
|
|
営業担当者は、次の情報を提供するパブリケーションに対してサブスクライブする必要があります。
社内のすべての営業担当者のリスト 次の文では、SalesRep テーブル全体をパブリッシュするパブリケーションを作成します。
CREATE PUBLICATION SalesRepData ( Table SalesReps ...) ); |
営業担当者に割り当てられている顧客のリスト この情報は、Customers テーブルで取得できます。次の文では、Customers テーブルをパブリッシュするパブリケーションを作成します。このパブリケーションには、Customers テーブルの rep_key カラムの値に一致するローが含まれています。
CREATE PUBLICATION SalesRepData ( TABLE Customers SUBSCRIBE BY rep_key ... ); |
割り当てられている顧客の窓口情報のリスト この情報は、Contacts テーブルで取得できます。Contacts テーブルは営業担当者の間で分割する必要がありますが、SalesRep テーブルの rep_key 値への参照は含みません。この問題を解決するには、Customers テーブルの rep_key カラムを参照する Contacts アーティクルで、サブクエリを使用します。
次の文では、Contacts テーブルをパブリッシュするパブリケーションを作成します。このパブリケーションには、Customers テーブルの rep_key カラムを参照するローが含まれています。
CREATE PUBLICATION SalesRepData ( ... TABLE Contacts SUBSCRIBE BY (SELECT rep_key FROM Customers WHERE Contacts.cust_key = Customers.cust_key ) ); |
Customers テーブルの 1 つのローには、Contacts テーブルの現在のローの cust_key 値が含まれています。SUBSCRIBE BY 文の中で WHERE 句を使用すると、サブクエリは必ず単一の値のみを返します。
次の文では、完全なパブリケーションが作成されます。
CREATE PUBLICATION SalesRepData ( TABLE SalesReps, TABLE Customers SUBSCRIBE BY rep_key, TABLE Contacts SUBSCRIBE BY (SELECT rep_key FROM Customers WHERE Contacts.cust_key = Customers.cust_key ) ); |
![]() |
DocCommentXchange で意見交換できます
|
Copyright © 2012, iAnywhere Solutions, Inc. - SQL Anywhere 12.0.1 |