作业帮---设计通用评论系统
请设计一个通用评论系统,给出想法。
要求:
- 评论之间可以相互顶贴、盖楼;
- 展示一页(10条)评论需要同时展示该页每条评论下面的所有评论,不同考虑页面展示的问题;
- 给出可执行的表结构定义语句。
评论静态页面展示:
思路:
- 主评论:保存评论信息和用户信息
- 主评论下的子评论:保存评论信息和该评论的作者以及被评论的评论信息的作者
评论分两种情况:
- 回复别人的评论:当回复别人的评论时需要@原评论作者,然后写出自己的评论;
- 添加新的评论:当添加新的评论时,默认原作者为null (即不存在), 然后写下评论;
实体信息类:
- 子评论实体类:
class SubCommit {
// 评论id
public int id;
// 评论文本
public String text;
// 发表评论的作者
public String username;
// 获取待评论对象的User信息, 默认值为null
public String oldUsername;
}
- 主评论类实体:
class Commit {
// 存储
public int id;
public String text;
public String username;
// 存储顶贴、盖楼实例
@OneToMany()
public List<SubCommit> subCommits;
}
功能实现:
- 实现用户顶贴
用户可以在别人的评论下面进行发表自己的评论,实现顶贴功能; - 实现盖楼
用户可以发表自己的主评论信息,实现盖楼功能; - 实现分页查询
分页查询只需要对Commit (主评论) 数据库类进行分页查询,每页10条记录。而每条Commit记录会查询出该Commit中的所有SubCommit (子评论)信息。
表结构定义:
- commit表:
create table commit(
id int primary key auto-increment,
text varchar(512) ,
username varchar(32)
);
- subCommit表:
create table subcommit (
id int primary key auto-increment,
text varchar(512),
username varchar(32),
oldUsername varchar(32) default null
);
- 关联表(OneToMany):
create table commit_subcommit(
id int primary key auto-increment,
commit_id int,
subcommit_id int
);