Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SQL Anywhere 12.0.1 » Mobile Link クイックスタート » Mobile Link チュートリアル » チュートリアル:Oracle Database 10g での Mobile Link の使用

 

レッスン 3:ユニークなキーの追加

このレッスンは、受講者がこれまでのすべてのレッスンを終了していることを前提としています。 レッスン 1:スキーマの設計を参照してください。

同期システムでは、テーブルのプライマリキーは、異なるデータベース内の同じローを識別する唯一の方法であり、競合を検出する唯一の方法です。使用する各テーブルには、プライマリキーが必要です。プライマリキーが更新されることはありません。また、1 つのデータベースに挿入されたプライマリキーの値が別のデータベースに挿入されないようにする必要があります。

ユニークなプライマリキーを生成する方法は複数あります。このチュートリアルでは、簡単に操作を行うため、複合プライマリキー方式を使用します。この方式では、統合データベースとリモートデータベースにまたがってユニークな複数のカラムを使用してプライマリキーを作成します。

 ♦ ユニークなプライマリキーの統合データベースへの追加
  1. コマンドプロンプトで次のコマンドを実行します。

    sqlplus SYS/your password for sys as SYSDBA
  2. SALES_REP_ID に追加する値は HR.EMPLOYEES テーブルに存在する必要があります。ORDERS_SALES_REP_FK 外部キーによりこのルールが強制的に適用されます。次の文を実行して外部キーを削除します。

    ALTER TABLE OE.ORDERS 
    DROP CONSTRAINT ORDERS_SALES_REP_FK;
  3. SALES_REP_ID カラムには NULL 値が含まれているため、このカラムをプライマリキーとして追加することはできません。このチュートリアルでは、NULL 値は 1 に置き換えます。次の文を実行します。

    UPDATE OE.ORDERS
    SET SALES_REP_ID = 1
    WHERE SALES_REP_ID IS NULL;
  4. ORDER_ID カラムは ORDERS テーブルの現在のプライマリキーです。現在のプライマリキーを削除するには、次の文を実行します。

    ALTER TABLE OE.ORDERS 
    DROP PRIMARY KEY CASCADE;
  5. 複合プライマリキーは SALES_REP_ID カラムと ORDER_ID カラムにより構成されます。複合プライマリキーを追加するには、次の文を実行します。

    ALTER TABLE OE.ORDERS
    ADD CONSTRAINT salesrep_order_pk PRIMARY KEY (sales_rep_id, order_id);

これらの文を実行した後、Mobile Link サーバーでは統合データベースに接続し、任意の数のリモートデータベースとの同期を設定できるようになります。

レッスンの後半では、統合スキーマからリモートスキーマを作成します。このため、リモートスキーマのプライマリキーは統合スキーマと同じものになります。

プライマリキーがすべてのデータベースに対してユニークになるようにカラムが選択されています。ORDERS テーブルでは、プライマリキーは SALES_REP_ID カラムと ORDER_ID カラムで構成されています。リモートデータベースの sales テーブルに挿入されるすべての値には、ユニークな注文番号が必要です (SALES_REP_ID の値は常に同じです)。これにより、リモートの各 ORDERS テーブルで一意性が確保されます。統合データベースの ORDERS テーブルのプライマリキーは、複数の販売担当者がデータがアップロードした場合の競合を防止する役割があります。販売担当者ごとに SALES_REP_ID の値が異なるため、1 人の販売担当者が行うアップロードはいずれも他の販売担当者に対してユニークです。

レッスン 4:Mobile Link の接続に進みます。