このチュートリアルでは、OE (注文エントリ) サンプル・データベースがインストールされていることを前提としています。このサンプル・スキーマのインストールに関する情報は、Oracle のマニュアルか、またはオンラインで http://www.oracle.com/technology/obe/obe1013jdev/common/OBEConnection.htm を参照してください。
OE データベースは Mobile Link で使用できるよう変更する必要があります。ユーザ定義型として作成されたカラムは削除されます。これらのユーザ定義型を SQL Anywhere が認識できる型に変換することもできますが、このチュートリアルではこの操作は行いません。次に、Mobile Link では OE のクレデンシャルを使用していくつかのトリガを作成する必要があるため、トリガを作成するためのパーミッションを OE ユーザに付与する必要があります。
SYSDBA 権限を持つ SYS ユーザとして、Oracle SQL Plus アプリケーションを使用して接続します。コマンド・プロンプトで次のコマンドを実行します。
sqlplus SYS/your password for sys as SYSDBA |
ユーザ定義型として作成されたカラムを削除するには、次のコマンドを実行します。
ALTER TABLE OE.CUSTOMERS DROP COLUMN CUST_ADDRESS; ALTER TABLE OE.CUSTOMERS DROP COLUMN PHONE_NUMBERS; ALTER TABLE OE.CUSTOMERS DROP COLUMN CUST_GEO_LOCATION; ALTER TABLE OE.PRODUCT_INFORMATION DROP COLUMN WARRANTY_PERIOD; |
OE ユーザのロックを解除し、パスワードを sql に設定します。次のコマンドを実行します。
ALTER USER OE IDENTIFIED BY sql ACCOUNT UNLOCK; |
OE ユーザがトリガを作成できるようにするには、次のコマンドを実行します。
GRANT CREATE ANY TRIGGER TO OE; |
orders_customer 外部キーを削除して、CUSTOMERS テーブルの customer_id を参照する新しい外部キーを作成するには、次のコマンドを実行します。
ALTER TABLE OE.ORDERS DROP CONSTRAINT ORDERS_CUSTOMER_ID_FK; ALTER TABLE OE.ORDERS ADD CONSTRAINT ORDERS_CUSTOMER_ID_FK FOREIGN KEY (CUSTOMER_ID) REFERENCES OE.CUSTOMERS (CUSTOMER_ID); |
同期システムでは、テーブルのプライマリ・キーは、異なるデータベース内の同じローを識別する唯一の方法であり、競合を検出する唯一の方法です。使用する各テーブルには、プライマリ・キーが必要です。プライマリ・キーが更新されることはありません。また、1 つのデータベースに挿入されたプライマリ・キーの値が別のデータベースに挿入されないようにする必要があります。
ユニークなプライマリ・キーを生成する方法は複数あります。このチュートリアルでは、簡単に操作を行うため、複合プライマリ・キー方式を使用します。この方式では、統合データベースとリモート・データベースにまたがってユニークな複数のカラムを使用してプライマリ・キーを作成します。
SYSDBA 権限を持つ SYS ユーザとして、Oracle SQL Plus アプリケーションを使用して接続します。コマンド・プロンプトで次のコマンドを実行します。
sqlplus SYS/your password for sys as SYSDBA |
SALES_REP_ID に追加する値は HR.EMPLOYEES テーブルに存在する必要があります。ORDERS_SALES_REP_FK 外部キーによりこのルールが強制的に適用されます。操作を簡単にするために、次のコマンドを実行してこの外部キーを削除します。
ALTER TABLE OE.ORDERS DROP CONSTRAINT ORDERS_SALES_REP_FK; |
SALES_REP_ID カラムには NULL 値が含まれているため、このカラムをプライマリ・キーとして追加することはできません。このチュートリアルでは、NULL 値は 1 に置き換えます。次のコマンドを実行します。
UPDATE OE.ORDERS SET SALES_REP_ID = 1 WHERE SALES_REP_ID IS NULL; |
ORDER_ID カラムは ORDERS テーブルの現在のプライマリ・キーです。現在のプライマリ・キーを削除するには、次のコマンドを実行します。
ALTER TABLE OE.ORDERS DROP PRIMARY KEY CASCADE; |
複合プライマリ・キーは SALES_REP_ID カラムと ORDER_ID カラムにより構成されます。複合プライマリ・キーを追加するには、次のコマンドを実行します。
ALTER TABLE OE.ORDERS ADD CONSTRAINT salesrep_order_pk PRIMARY KEY (sales_rep_id, order_id); |
これらのコマンドを追加すると、Mobile Link サーバでは問題なく統合データベースに接続し、任意の数のリモート・データベースと同期できるよう統合データベースを設定できるようになります。
レッスン 4 では、統合スキーマからリモート・スキーマを作成します。このため、リモート・スキーマのプライマリ・キーは統合スキーマと同じものになります。
プライマリ・キーがすべてのデータベースに対してユニークになるようにカラムが選択されています。ORDERS テーブルでは、プライマリ・キーは SALES_REP_ID カラムと ORDER_ID カラムで構成されています。リモート・データベースの sales テーブルに挿入されるすべての値には、ユニークな注文番号が必要です (SALES_REP_ID の値は常に同じです)。これにより、リモートの各 ORDERS テーブルで一意性が確保されます。統合データベースの ORDERS テーブルのプライマリ・キーは、複数の販売担当者がデータがアップロードした場合の競合を防止する役割があります。販売担当者ごとに SALES_REP_ID の値が異なるため、1 人の販売担当者が行うアップロードはいずれも他の販売担当者に対してユニークです。
RDBMS の詳細については、統合データベースの概要 を参照してください。
Oracle を統合データベースとして設定する方法の詳細については、Oracle 統合データベースを参照してください。
ユニークなプライマリ・キーを生成する各種の方法については、ユニークなプライマリ・キーの管理を参照してください。
Copyright © 2009, iAnywhere Solutions, Inc. - SQL Anywhere 11.0.1 |