現在、サーバー間でデータを同期する必要があるアプリを開発しています。このアプリは SQLite を多用しているため、生の sqlite に移行し、FMDatabase を使用することにしました。データの状態を管理せず、データを収集して送信するだけであるため、テーブルは非正規化されており、キーはありません。一定の時間間隔でテーブルを更新しています (サーバーから取得して新しいコンテンツを挿入する) が、サーバーにデータを送信する頻度が高くなります。
サーバーからのデータは、id 値 (char 型の GUID 値) を持つ完全なレコードとして提供されるため、これらの id 列で構成されるテーブルの PK キーを作成しました。問題は、サーバーからデータを取得するときに、新しいレコードを挿入するだけでよいということです。現在、これらの id 値を使用して挿入を行っています。一部のレコードは挿入され (新規)、一部は ID 列の一意の PK 制約により失敗します。私にとっては、まったく問題ありません。コンソールのメッセージを煩わせるだけで(一意のキーに違反しています)、パフォーマンスなどに影響を与えているかどうかはわかりません。新しいレコードを挿入する前にレコードをループして、既存のレコードを見つけて、本当に新しいレコードだけを挿入することもできますが、私は思うそれは無駄です。
また、明示的な内部 int id を作成することもできます (PK インデックスの方が高速です) が、テーブルは FK とは関係がないため、冗長になります。それについて何か考えはありますか?