0

ブログのコメントシステムを作ろうとしています。変更された事前注文トラバーサル システムが動作しています (このガイドを使用: http://mikehillyer.com/articles/managing-hierarchical-data-in-mysql/ )。

ただし、いくつかの問題があります。ガイドが、さまざまなブログ投稿を管理する方法と、返信ではないコメントを追加する方法を説明しているとは思いません。

私のコメントテーブルは次のようになります:

+-------------+----------------------+-----+-----+

| comment_id  | message              | lft | rgt |
auto increment
+-------------+----------------------+-----+-----+

これはこれを管理する良い方法ですか?

コメント テーブルに「blog_post_id」と「root」という列を追加します。ブログ投稿を作成するときは、blog_post_id と root を true に設定してコメント テーブルにエントリを追加します。次に、lft が comment_id で、右が comment_id + 1 です。

ブログ投稿のコメントを読み込むには、lft と rgt WHERE が blog_post_id = x で root = true であることを確認し、lft と rgt の間の blog_post_id が x であるすべてのコメントを選択します...

私はこの方法を思いついたばかりなので、もっと良い方法があるに違いないと確信しています。

ありがとう

4

2 に答える 2

0

コラムを追加しblog_post_idて、ブログ投稿自体を仮想コメント (コメント ツリーのルート) と見なしてはどうでしょうか。その後、複数の子を持つことができます。

AND blog_post_id == fooこの方法を使用すると、その記事のすべてのアルゴリズムを変更せずに使用できますが、すべてのクエリに追加し、常にルート コメントを無視するという注意事項があります(ブログ自体を表しているため)。

于 2009-06-14T18:32:07.627 に答える
0

あなたはとても良い方法を「思いついた」。これは、ネストされたコメントを管理する標準的な方法です。これと実装に関するかなりの文献があります。

実装例については、こちらをご覧ください: http://api.rubyonrails.org/classes/ActiveRecord/Acts/NestedSet/ClassMethods.html

于 2009-06-14T20:06:39.413 に答える