このチュートリアルでは、pubs2 データベースへの接続にデフォルトの sa アカウントを使用します。Adaptive Server Enterprise のインストール時点では、sa アカウントのパスワードは NULL です。このチュートリアルでは、NULL のパスワードが有効なパスワードに変更されていることを前提としています。Adaptive Server Enterprise で NULL のパスワードを変更する方法については、 http://infocenter.sybase.com/help/index.jsp?topic=/com.sybase.help.ase_15.0.sag1/html/sag1/sag1615.htm を参照してください。
このレッスンでは、Mobile Link 同期用の統合データベースのサイズを増やし、ユニークなプライマリ・キーを作成します。
Mobile Link では、同期のためにシステム・テーブルなどのオブジェクトを pubs2 データベースに追加する必要があります。この処理を行うには、pubs2 データベースのサイズを増やす必要があります。
Adaptive Server Enterprise の isql ユーティリティを使用して、pubs2 データベースに sa として接続します。コマンド・プロンプトで、次のコマンドをすべて 1 行に入力して実行します。
isql -U sa -P Your password for sa account -D pubs2 |
Adaptive Server Enterprise にリモートでアクセスしている場合は、-S パラメータでサーバ名を指定します。
データベースのサイズを増やすための所定のパーミッションを得るには、master データベースにアクセスする必要があります。isql で次のコマンドを実行します。
use master |
Adaptive Server Enterprise では、データベースはディスクまたはディスクの一部に保存されます。pubs2 データベースのサイズを増やすには、次のコマンドを実行します (pubs2 が格納されているディスクを指定する必要があります)。
ALTER DATABASE pubs2 ON disk name = 33 |
同期システムでは、テーブルのプライマリ・キーは、異なるデータベース内の同じローを識別する唯一の方法であり、競合を検出する唯一の方法です。使用する各テーブルには、プライマリ・キーが必要です。プライマリ・キーが更新されることはありません。また、1 つのデータベースに挿入されたプライマリ・キーの値が別のデータベースに挿入されないようにする必要があります。
ユニークなプライマリ・キーを生成する方法は複数あります。このチュートリアルでは、簡単に操作を行うため、複合プライマリ・キー方式を使用します。この方式では、統合データベースとリモート・データベースにまたがってユニークな複数のカラムを使用してプライマリ・キーを作成します。
Adaptive Server Enterprise の isql ユーティリティを使用して、pubs2 データベースに sa として接続します。コマンド・プロンプトで、次のコマンドをすべて 1 行に入力して実行します。
isql -U sa -P Your password for sa account -D pubs2 |
Adaptive Server Enterprise にリモートでアクセスしている場合は、-S パラメータでサーバ名を指定します。
次のローは、手順 5 で salesdetail テーブルに対して作成した複合プライマリ・キーを基準とするとユニークではありません。操作を簡単にするために、次のコマンドを実行してこのローを削除します。
DELETE FROM salesdetail WHERE stor_id = '5023' AND ord_num = 'NF-123-ADS-642-9G3' AND title_id = 'PC8888' DELETE FROM salesdetail WHERE stor_id = '5023' AND ord_num = 'ZS-645-CAT-415-1B2' AND title_id = 'BU2075' |
次のインデックスは、手順 5 でのプライマリ・キーの作成に干渉しています。このインデックスを削除するには、次のコマンドを実行します。
DROP INDEX authors.auidind DROP INDEX titleauthor.taind DROP INDEX titles.titleidind DROP INDEX sales.salesind |
ユニークなプライマリ・キーを追加します。
ALTER TABLE au_pix ADD PRIMARY KEY (au_id) ALTER TABLE authors ADD PRIMARY KEY (au_id) ALTER TABLE titleauthor ADD PRIMARY KEY (au_id, title_id) ALTER TABLE titles ADD PRIMARY KEY (title_id) ALTER TABLE discounts ADD PRIMARY KEY (discounttype) ALTER TABLE stores ADD PRIMARY KEY (stor_id) ALTER TABLE sales ADD PRIMARY KEY (stor_id, ord_num) ALTER TABLE salesdetail ADD PRIMARY KEY (stor_id, ord_num, title_id) |
これらのコマンドを追加すると、Mobile Link サーバでは問題なく統合データベースに接続し、任意の数のリモート・データベースと同期できるよう統合データベースを設定できるようになります。
プライマリ・キーがない統合データベースとデータを同期することも可能です。ただし、他のテーブルでローを一意に識別するよう設計されたシャドー・テーブルで機能する同期イベントを自分で作成する必要があります。
レッスン 4 では、統合スキーマからリモート・スキーマを作成します。このため、リモート・スキーマのプライマリ・キーは統合スキーマと同じものになります。
プライマリ・キーがすべてのデータベースに対してユニークになるようにカラムが選択されています。sales テーブルでは、プライマリ・キーは stor_id と ord_num カラムで構成されています。リモート・データベースの sales テーブルに挿入されるすべての値には、ユニークな注文番号が必要です (stor_id の値は常に同じです)。これにより、リモートの各 sales テーブルで一意性が確保されます。統合データベースの sales テーブルのプライマリ・キーは、複数の書店でデータがアップロードされた場合の競合を防止する役割があります。書店ごとに stor_id の値が異なるため、1 軒の書店からのアップロードはいずれも他の書店に対してユニークです。
salesdetail テーブルでは、プライマリ・キーは stor_id、ord_num、title_id の各カラムで構成されています。1 件の注文に複数の本のタイトルが存在する場合もあります。リモート・データベースの sales テーブルでは、stor_id と ord_num については複数のローで同じ値になってもかまいませんが、title_id の値はローごとに異なる必要があります。これにより、各リモート・データベースの salesdetail テーブルで一意性が確保されます。sales テーブルと同様に、書店ごとに stor_id の値が異なるため、1 軒の書店から統合データベースへのアップロードはいずれも他の書店に対してユニークです。
Adaptive Server Enterprise に関する問題の詳細については、Adaptive Server Enterprise 統合データベースを参照してください。
ユニークなプライマリ・キーを生成する各種の方法については、ユニークなプライマリ・キーの管理を参照してください。
Copyright © 2009, iAnywhere Solutions, Inc. - SQL Anywhere 11.0.1 |