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