简单的回帖评论设计

实现类似QQ空间,微信聊天风格的回帖评论

2. sql表设计


CREATE TABLE `comments` (

        `comment_id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,

        `theme_id` INT(10) UNSIGNED NOT NULL,

        `user_id` INT(10) UNSIGNED NOT NULL,

        `to_user_id` INT(10) UNSIGNED NOT NULL,

        `pid` INT(10) UNSIGNED NOT NULL,

        `num_like` INT(10) UNSIGNED NOT NULL,

        `commentable_id` INT(10) UNSIGNED NOT NULL,

        `commentable_type` VARCHAR(50) NOT NULL COLLATE 'utf8mb4_unicode_ci',

        `is_del` TINYINT(4) NOT NULL,

        `created_at` TIMESTAMP NULL DEFAULT NULL,

        `updated_at` TIMESTAMP NULL DEFAULT NULL,

        PRIMARY KEY (`comment_id`)

)

        COLLATE='utf8mb4_unicode_ci'

        ENGINE=MyISAM;


3. 数据表介绍

comment_id 评论ID 主键 自增ID

theme_id 主题ID

user_id 发布评论的用户ID

to_user_id 回复用户的ID

pid 评论的父ID

num_like 点赞数

commentable_id 来源表ID

commentable_type 来源表

is_del 是否删除


关联关系:帖子下面有评论,一级评论算一个主题,二级、三级等。。算主题的普通评论

theme_id 和 pid 关系

当用户发布评论级别(level)为一时,theme_id和pid默认为0

当用户针对别的用户的评论(A)进行评论生成评论(B)时,

      评论(B)pid为A评论的comment_id

      评论(B)theme_id为A评论的theme_id,如果theme_id为0,那么为A评论的comment_id

4. 查询帖子所有评论并进行格式化(分两步)

4.1 查询帖子下所有评论(查询帖子一级评论)

根据commentable_id和commentable_type确定具体的帖子

按照theme_id=0(查找到一级评论)

按照时间排序

4.2 查询主题下的所有子评论

按照是否删除查找

按照主题查找(查找同一个主题下所有评论)

按照pid查找(按照pid排序)

按照时间查找(按照created_at排序)

你可能感兴趣的:(简单的回帖评论设计)