2011-01-13 4 views
0

私はいくつかのノートを作成することができるWebアプリケーションを持っている、私は新しいノートを作成するたびに、それはauto_increment IDを持つテーブルに挿入されます。dbを同期するときにデータを区別する方法は?

私はノートを作成することもできます(ローカルにsqliteで保存することもできます)、そしてこれらのノートをサーバと同期させることができます。

問題は、自分の電話機にノートを作成すると、自分のauto_incrementのIDを持つことになります。これは何度もサーバのノートと同じになります!

私は重複したメモを気にしません(実際には、新しいメモが重複しているかどうかを区別する方法はないと思いますが、物理的なIDはないので問題は彼らは同じID(主キー)を持っている、私はそれらをサーバーに挿入することはできません。

提案がありますか?

答えて

0

メモのキーとしてUUIDを使用できます。

このように、各エントリは、サーバー上またはクライアント上に作成された一意のIDを持つ必要があります。

UUIDを作成するには、UUID.randomUUID()を使用できます。

0

最も明白な解決策は、データベースのauto_increment_idに加えて、各ノートに独自のユニークなハッシュまたはGUIDを付けることです。

次に、これらのユニークな値を同期の基礎として使用し、各テーブルの「最後に同期した」タイムスタンプを使用して、どのデータを同期する必要があるかを知り、データが既に存在するかどうかを簡単に判断できます(更新する必要があります)、またはそれが新しいメモであるかどうかを確認します。

0

申し訳ありませんが、あなたのDB構造が間違っていると思います。このように、オートインクリメントフィールドを使用することはできません。自動インクリメントの値は特定の用途に合わせて作成されます。このように2つのテーブルをマージする必要がある場合は、別のロジックを実装する必要があります。 note_idを使用して、このIDを一意にするために、より多くのデータ(ユーザーID、デバイスIDなど)を使用して、固有の方法でメモを識別します。オートインクリメントでは、このシナリオでは最高の状態で乱雑なアーキテクチャしか得られません。

関連する問題