私が苦労している設計上の決定の例を挙げたいと思います:
「To Do リスト」アプリケーションがあり、各リストが MongoDB ドキュメントとして定義され、その項目が埋め込みコレクションとして定義されているとします。
これは非常に簡単ですが、一種の「フォーク」機能を追加して、友人が私のドキュメントをコピーし、元のドキュメントに変更を加えるたびにアイテムが自動的に同期されるようにしたいと考えています。
つまり、リスト内のアイテムを追加、名前変更、削除、または並べ替えると、アイテムをチェック/チェック解除したまま、リストを更新できます。
ここにいくつかのアイデアがありますが、私は MongoDB を初めて使用し、それぞれの実装がどれほど難しいかわかりません。これは望ましいことであり、発生する可能性のあるすべての問題を確認することはできません。
- RDBMS の方法:項目を個別のコレクションとして保持し、それぞれがリストに埋め込まれた「チェック済み/未チェック」項目によって参照されます (本質的に多対多の関係)。
- 元のアイテムを参照する:埋め込まれたコピーされた各アイテムは、元のドキュメントの対応するアイテムを参照します。これにより、元のアイテムの名前が変更されたか、削除されたか、または新しく追加されたかがわかります。
ソリューションの決定に役立つ洞察を提供できる人はいますか?
アップデート:
ユーザー エクスペリエンスの一部として、コピーされたドキュメントの所有者にリストを更新するかどうかを決定させたいので、最初の実装ではうまくいかないと思います。
しかし、2 番目の方法で変更を追跡するにはどうすればよいでしょうか。