MySQLデータベースに依存するWebアプリケーションがあり、そのためにiPhoneアプリを作成することを考えています。このアプリを使用すると、ユーザーはWebアプリケーションで自分のアカウントのデータを参照/挿入/更新/削除できます。
最も簡単な方法は、iPhoneアプリをWebアプリのインターフェイスとして単純に構築することです。つまり、各操作をWebに接続する必要があります。ただし、iPhoneアプリに独自の「オフライン」バージョンのデータベースを持たせたいと思います。これにより、ユーザーはオフラインで作業できるだけでなく、すべてをローカルに配置することでアプリの速度と応答性が向上するため、エクスペリエンスが向上します。
タイムスタンプを使用して最新バージョンを保持することで競合を処理します(すでにソフト削除を使用しています。つまり、ユーザーがレコードを削除するときにフラグを設定するだけです)が、挿入の処理方法がよくわかりません。実際、ユーザーがオフライン(iPhoneアプリ)データベースとオンライン(Webアプリ)データベースの両方に新しいアイテムを挿入すると、主キーの競合が発生します(すべてのテーブルには、主キーとして自動インクリメントを使用するINTEGERフィールドがあります)。この問題をどのように処理できますか?
私は2列の主キーを持つことを考えていました。1つは自動インクリメントされた整数で、もう1つは「デバイス」に固有のものです。このように、Webアプリを介して追加された新しいレコードのIDは1-web、2-webなどになり、iPhoneアプリを介して作成されたレコード1-iphone、2-iphoneなど...これにより、2つをマージできます。競合のないデータベース。このアイデアについてどう思いますか?