私のWebアプリケーション(Point of Sale)は、複数の支店で売上を処理します。各販売には固有の整数IDがあります。ブランチ1の一部の販売IDはnで、ブランチ2の次の販売はn +1です。webappがオフラインになったときの売買取引
ブランチがインターネット接続を失うと、セール情報がブラウザの内部データベースに保存されます。ここでセールスIDは最後のセールスIDに1を加えたものです。接続が復元されると、その情報をサーバーに送信し、それを実際のデータベースに格納します。
2つ以上のブランチがインターネット接続を失ったときにナイトメアが発生します。オフラインで販売してインターネットに戻ってくると、同じIDで2回の販売を受けることになります。これは、顧客のチケットがすでに印刷されているためです。
私の今の計画は、各販売IDに支店IDとその支店の実際の販売番号を混在させることです。したがって、ブランチ1の販売IDは1-1となり、ブランチ2からの次の販売は2-1となります。 brachが2つの売り場を持つまでは良いとは言えますが、これはあまり将来の証拠ではありません。
最高のアプローチは何だと思いますか?これを行うより良い方法はありますか?
この場合、GUIDを使用している場合(GUIDを使用しないでください)、GUIDはクライアント側でのみ使用する必要があります。クライアントがサーバーと同期すると、サーバーは将来使用するための適切な識別子を割り当てることができます。 –
@私はコンピュータにGUIDを処理させてくれますが、私よりもはるかに高速です。疑問があるときは、いつでもPKとしてintを介してGUIDを選択します。数十万の異なるソースからのデータを一緒にマッシュする時が来たら、すべてが1から始まるintを使用しなかったことを非常にうれしく思います。 – ScottS