Eine Datenpartitionierung ist disjunkt, wenn die entfernten Datenbanken keine Daten gemeinsam nutzen. Beispiel: Jeder Handelsvertreter hat seinen eigenen Kundenstamm und teilt keine Kunden mit anderen Handelsvertretern.
Im folgenden Beispiel speichern drei Tabellen Informationen über die Interaktionen zwischen Handelsvertretern und Kunden: Customers, Contacts und SalesReps. Jeder Handelsvertreter bedient mehrere Kunden. Bei manchen Kunden gibt es einen einzigen Kontakt, während andere Kunden mehrere Kontakte haben.
Die folgende Tabelle beschreibt die Customers-, Contacts- und SalesReps-Datenbanktabellen. Weitere Hinweise zu diesen Tabellen finden Sie unter Disjunkte Datenpartitionen.
Tabelle | Beschreibung | Tabellendefinition | ||
---|---|---|---|---|
Contacts |
Alle einzelnen Kontakte, die mit der Firma Geschäfte machen. Jeder Kontakt gehört einem einzigen Kunden. Die Contacts-Tabelle enthält folgende Spalten:
|
|
||
Customers |
Alle Kunden, die mit der Firma Geschäfte machen. Die Customers-Tabelle enthält die folgenden Spalten:
|
|
||
SalesReps |
Alle Handelsvertreter, die für die Firma arbeiten. Die SalesReps-Tabelle enthält die folgenden Spalten:
|
|
Ein Handelsvertreter muss eine Publikation subskribieren, die die folgenden Informationen bereitstellt:
Eine Liste aller Handelsvertreter, die für die Firma arbeiten Die folgende Anweisung erstellt eine Publikation, die die gesamte SalesRep-Tabelle publiziert:
CREATE PUBLICATION SalesRepData ( Table SalesReps ...) ); |
Eine Liste der ihm zugeordneten Kunden Diese Informationen sind in der Customers-Tabelle verfügbar. Die folgende Anweisung erstellt eine Publikation, die die Customers-Tabelle publiziert, die die Zeilen enthält, die mit dem Wert der rep_key-Spalte in der Customers-Tabelle übereinstimmen:
CREATE PUBLICATION SalesRepData ( TABLE Customers SUBSCRIBE BY rep_key ... ); |
Eine Liste der Kontaktinformationen für seine zugeordneten Kunden Diese Informationen sind in der Contacts-Tabelle verfügbar. Die Contacts-Tabelle muss unter den Handelsvertretern aufgeteilt werden, aber es gibt keine Referenz zum rep_key-Wert in der SalesRep-Tabelle. Um dieses Problem zu lösen, verwenden Sie eine Unterabfrage im Contacts-Artikel, die die rep_key-Spalte der Customers-Tabelle referenziert.
Die folgende Anweisung erstellt eine Publikation, die die Contacts-Tabelle mit den Zeilen enthält, die eine Referenz auf die rep_key-Spalte in der Customers-Tabelle enthalten:
CREATE PUBLICATION SalesRepData ( ... TABLE Contacts SUBSCRIBE BY (SELECT rep_key FROM Customers WHERE Contacts.cust_key = Customers.cust_key ) ); |
Eine Zeile in der Customers-Tabelle hat den cust_key-Wert in der aktuellen Zeile der Contacts-Tabelle, und die WHERE-Klausel in der SUBSCRIBE BY-Anweisung stellt sicher, dass die Unterabfrage nur einen einzigen Wert zurückgibt.
Dir folgende Anweisung erstellt die vollständige Publikation:
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 ) ); |
![]() |
Kommentieren Sie diese Seite in DocCommentXchange.
|
Copyright © 2012, iAnywhere Solutions, Inc. - SQL Anywhere 12.0.1 |