建築レベルでこれに苦労してきました。
コメントできるオブジェクトがあります。それをと呼びましょうPost
。すべての投稿には一意のIDがあります。
ここで、その投稿にコメントしたいと思います。IDを外部キーとして使用できます。各投稿コメントには、投稿に関連するItemIDフィールドがあります。各投稿には一意のIDがあるため、「トップレベル」のコメントを割り当てるのは非常に簡単です。
ただし、コメントにコメントすると、PostCommentのIDに添付されるPostCommentCommentが必要になったように感じます。IDは順番に割り当てられるため、ItemIDを使用して、ツリー内のどこにコメントが割り当てられているかを区別することはできなくなりました。IEの投稿と投稿コメントの両方のIDが「5」である可能性があるため、外部キーの関係が無効です。
これは、PostCommentCommentCommentなどで無限に続く可能性があるようです...
これを解決するための最良の方法は何ですか?IDを添付するコレクションを知るために、コメントに「IsPostComment」などのフィールドを含める必要がありますか?これは私がこれまでに見た中で最高の解決策だと思いますが、今では、高価になり始めた再帰的なデータベース呼び出しを行う必要があると感じています。
つまり、私はを取得し、Post
すべてのPostCommentsを取得しますwhere ItemID == Post.ID && where IsPostComment == true
次に、それをコレクションとして取得し、のすべてのIDを収集し、PostComments
別の検索を実行してwhere ItemID == PostComment[all].ID && where IsPostComment == false
から、無限に繰り返します。
これは、すべてのレイヤーに対して呼び出しを行うことを意味します。100の投稿を呼び出す場合、1000のDB呼び出しを行って、それぞれ10レイヤーのコメントを取得する可能性があります。
これを行う正しい方法は何ですか?