ancestorには祖先としての自分自身のcomment_idを入れて、descendantにはその子孫に当たるcomment_idを入れています。 ツリー構造への参照や更新がしやすくなる このような閉包テーブルでコメント間の親子関係を保存しておくことで、いろんな要件を満たしたクエリ実行が簡単になります。 comment_id=1をスレッドとして、その子に当たるコメントを全て取得する場合 SELECT c.* FROM Comments c INNER JOIN TreePaths t ON c.comment_id = t.descendant WHERE t.ancestor = 1; comment_id=3を親とするコメント(comment_id=7)を新規追加したい場合 INSERT INTO TreePaths(ancestor, descendant) VALUES SELE
![SQL:閉包テーブルってなんぞや - Shiro's secret base](https://cdn-ak-scissors.b.st-hatena.com/image/square/06b7f60e814b72576b30cc19e8f672c6183bbd5e/height=288;version=1;width=512/https%3A%2F%2Fshiro-secret-base.com%2Fwp-content%2Fuploads%2F2021%2F05%2Fsql.png)