サーバー側コンポーネントとクライアント側コンポーネントの2つのコンポーネントを持つプロジェクトがあります。さまざまな理由により、クライアント側のデバイスはデータベースの完全なコピーを持ち運びません。
私のモデルが2つの側の間に1:1の相関関係を持っていることはどれほど重要ですか?そして、質問を私のより大きな懸念に拡張するために、もしそうでなければ、私が遭遇するであろう時限爆弾はありますか?私はそれぞれの側で異なる情報を持っていることについて話しているのではなく、むしろ情報がカプセル化される方法は異なります。(明らかに、ストレージメカニズムも異なります)サーバー側は、各ユーザー、各レビュー、各「アイテム」を個別のテーブルで保存し、必要に応じてデータを収集するためにそれらの間にリンクを作成します。クライアント側は完全なユーザーデータベースを持っているべきではありませんが、「名前」などを収集するためにユーザーに対してリンクするのではなく、レビューに保存します。言い換えると...
- - サーバ側 - -
Item:+id//アイテムに関する情報を保存する
ユーザー:+ id + Name -Password
レビュー:+ id + itemId + ratio + text + userId
---デバイス側---
アイテム:+ id + AverageRating
レビュー:+ id + ratio + text + userId + name
ユーザー:+ id +Name//スタッフ
基本的な考え方は、特定の「重要な」情報が1レベル上に移動することです。ユーザーは、クエリに関連する「アイテム」のリストを取得し、特定のレビュー指向の情報を上に移動します(つまり、平均評価)。さらに情報が必要な場合は、アイテムの詳細ビューを照会し、実際のレビューが照会されてデータセットに追加されます(表示されます)。彼らが実際のレビューを照会すると、レビューが照会され、途中で追加のユーザー情報が取得されます(おそらく、ユーザーが追加のユーザー情報のいずれかを使用できるかどうかはわかりません)。
私の基本的な懸念は、適切なデータベースの正規化によって情報を本当に下に保存する必要があると示唆されている場合でも、ユーザーの帯域幅やローカルストレージに必要のない多種多様な情報を詰め込みたくないということです。 ' レベル。
これは私が考え/心配しようとしているレベルであるため、かなり低レベルの概念的な問題として表現しましたが、それが重要な場合は、iOS/CoreDataクライアントにデータを提供するPHP/MySQLサーバーを作成しています。