ParentID フィールドを含む 1 つのテーブルのみを使用できます。レコードに値がない場合はコメントであり、そうでない場合は返信 (コメントまたは返信のいずれか) です。
レコードの ParentID レコードをクエリして (ParentIDであることを調べます)、この返信がコメントに対するものか返信に対するものかを確認できます。
編集:上記はかなり実用的な解決策です。ただし、正規化されたバージョンを使用するには、1 つの Comments テーブル (ParentID なし) を保持し、CommentID と ResponseID を持つ ReplyTo テーブルを作成します。どちらも Comments テーブル内のレコードの ID です。
このアイデアを使用して、次の sql は、コメントを含む各返信について、コメントと各コメントへの「返信」を表示します。
select c.comment, r.comment as reply
from comment as c, comment as r, replyto as rt
where c.ID = rt.CommentID
and r.ID = rt.ReplyID
Dimitrii が指摘しているように、返信のないコメントは表示されません。そのためには、外部結合クエリが必要です (構文はテストしていません)。
SELECT c.comment, r.comment as reply,
from Comment c
left outer join Comment r on c.id = r.id
left outer join replyto rt on rt.responseid = r.id