作业帮---设计通用评论系统

请设计一个通用评论系统,给出想法。
要求:

  1. 评论之间可以相互顶贴、盖楼;
  2. 展示一页(10条)评论需要同时展示该页每条评论下面的所有评论,不同考虑页面展示的问题;
  3. 给出可执行的表结构定义语句。

评论静态页面展示:
作业帮---设计通用评论系统
思路:

  1. 主评论:保存评论信息和用户信息
  2. 主评论下的子评论:保存评论信息和该评论的作者以及被评论的评论信息的作者

评论分两种情况:

  • 回复别人的评论:当回复别人的评论时需要@原评论作者,然后写出自己的评论;
  • 添加新的评论:当添加新的评论时,默认原作者为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
);