コメント システムの最適な解決策はMySQL での階層データの管理です。
ただし、上位のコメントに対してのみ返信を許可する予定です。深さレベルは 1 つだけです。この場合、構造は複雑なツリーよりもはるかに単純になります。
このシナリオでそれを実装する他の方法はありますか? もっと簡単に、もっと簡単に、もっと速く?
1 レベルの実装は、N レベルの実装と同じです。
唯一の違いは、1 つのレベルのみを使用することです。
考えられる実装は次のようになります: すべてのコメントを 1 つのテーブルに入れ、ブログ記事またはコメントするものへの外部キーを使用します。ネストは ParentCommentId に格納されます。ID が NULL の場合はルート コメントであり、値がある場合は他のコメントに対するコメントです。
簡単なコメント フォームを作成し、結果をデータベースに保存するのは非常に簡単です。
テーブル構造は次のようになります。
CREATE TABLE `Comments` (
`CommentId` int(11) NOT NULL AUTO_INCREMENT,
`BlogId` int(11) NOT NULL,
`ParentCommentId` int(11),
`Content` text NOT NULL,
`Name` varchar(64) NOT NULL DEFAULT '',
`EMail` varchar(64) DEFAULT NULL,
`Url` varchar(64) DEFAULT NULL,
`IP` varchar(20) NOT NULL DEFAULT '',
`Created` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
`Modified` datetime DEFAULT NULL,
PRIMARY KEY (`CommentId`),
KEY `FK_Blog` (`BlogId`),
CONSTRAINT `FK_CommentBlog` FOREIGN KEY (`BlogId`) REFERENCES `Blogs` (`BlogId`),
) ENGINE=InnoDB DEFAULT CHARSET=utf8;