MirrorSyncが管理するシリアル番号の問題点は、送り状番号のようなユーザーから見える番号には適していないということです。主キーがデバイスによって変わるからです。シリアル番号の主キーを送り状番号として使用している場合に、オフラインデバイスとサーバとで送り状番号が違ってしまったら、明らかに問題となります。
解決策の例
この問題の解決策は、いくつかあります。
- まず確認すべきことのひとつは、データベースで1つのフィールドを主キーとユーザから見える値(この例では送り状番号)の両方の用途で使っているかどうかです。どんな場合でも(同期しないとしても)、この2つの用途は別のフィールドにするのが望ましいことです。送り状番号/業務番号/ユーザから見える番号を、データベースの主キーとして使用すべきではありません。主キーはデータベース内部の識別子であり、ユーザから読める値の役割を兼ねることは避けるべきです。
別々のフィールドになっていれば、問題の解決は簡単です。リレーションシップを壊すことなく、送り状番号の値を柔軟に変更できるからです。推奨されるアプローチについては、後述の「ユーザから見える数字の値を書き戻す」のセクションを参照してください。
1つのフィールドを主キーと送り状番号として使っていて、これを2つのフィールドに分けることができる場合は(1つはリレーションシップ用、もう1つは表示/検索用)、そのようにしてください。これはたいへんな大仕事になってしまうかもしれません。新規フィールドを作るのは簡単ですが、その後、元のフィールドがユーザインタフェースに使われているすべての場所を見つけて、新たに作った送り状番号フィールドにポイントしなくてはなりません。あるいは、元のフィールドがリレーションシップグラフ中で使われている箇所をすべて見つけて、新たに作った主キーのフィールドにポイントし直さなくてはなりません。これを避けたい場合は、推奨される方法として、後述の「MIRRORSYNC_DATABASEIDをユーザから見える番号として使う」のセクションを参照してください。
原文:What if I need to assign a user-friendly serial number to my records that stays the same when it is synced? For example, an invoice number? http://docs.360works.com/index.php/MirrorSync_advanced_topics#What_if_I_need_to_assign_a_user-friendly_serial_number_to_my_records_that_stays_the_same_when_it_is_synced.3F_For_example.2C_an_invoice_number.3F
コメント
0件のコメント
サインインしてコメントを残してください。