mysql实现网站常见的文章评论功能:包括用户表,文章表,文章评论表,文章评论回复表

发布时间 2023-04-27 14:18:36作者: 阿jin

用户表sql:包括用户id,用户名,密码,昵称,性别,头像,生日,创建日期,更新日期等,其它字段可自行扩展  

CREATE TABLE users (  
  id INT PRIMARY KEY AUTO_INCREMENT, // id 主键 自动增长
  username VARCHAR(50) NOT NULL, // 用户名
  password VARCHAR(50) NOT NULL, // 密码
  nickname VARCHAR(50) NOT NULL, // 昵称
  avatar varchar(255), // 头像url
  sex TINYINT(1) NOT NULL DEFAULT 1, // 性别,只能是1或0,1代表男,0代表女
  birthday DATE, // 生日为 DATE 日期类型
  created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, // 创建时间,自动应用当前时间戳(也可自行修改)
  updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP // 更新时间,自动更新
); 

 

文章表sql:包括文章id,标题,内容,创建时间,更新时间,其它字段可自行扩展(例如文章作者id,点赞量,阅读量等)

CREATE TABLE article (
  id INT PRIMARY KEY AUTO_INCREMENT, // id 主键 自动增长
  user_id INT NOT NULL, // 用户id
  title VARCHAR(255) NOT NULL, // 文章标题
  content TEXT NOT NULL, // 文章内容
  create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP, // 创建时间,自动应用当前时间戳(也可自行修改)
  update_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP // 更新时间,自动更新
);

 

文章评论表sql:包括评论id,文章id,用户id,评论内容,评论时间(直接使用create_time字段),更新时间

CREATE TABLE comment (
  id INT PRIMARY KEY AUTO_INCREMENT, // id 主键 自动增长
  article_id INT NOT NULL, // 文章id
  user_id INT NOT NULL, // 用户id
  content TEXT NOT NULL, // 评论内容
  create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP,  // 评论时间,自动应用当前时间戳(也可自行修改)
  update_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, // 更新时间,自动更新
  FOREIGN KEY (article_id) REFERENCES article(id) ON DELETE CASCADE // 文章id 关联 文章表的id,当文章删除时,该评论也自动删除
  //(如果当用户注销时,也想要删除用户评论过的内容,也可采取关联的做法)
);

 

评论回复表sql:包括回复id,用户id,评论id,父级回复id,回复内容,回复时间(create_time),更新时间

回复功能,即可回复评论,也可回复回复,大部分网站都有这种功能

CREATE TABLE reply (
  id INT PRIMARY KEY AUTO_INCREMENT, // id 主键 自动增长
  user_id INT NOT NULL, // 用户id
  comment_id INT NOT NULL, // 评论id
  parent_id INT DEFAULT NULL, // 父级回复id
  content TEXT NOT NULL, // 回复内容
  create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP, // 回复时间,自动应用当前时间戳(也可自行修改)
  // 更新时间,自动更新
  update_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, 
  // 回复表.评论id 关联 评论表.id,当评论删除时,评论下的回复也删除
  FOREIGN KEY (comment_id) REFERENCES comment(id) ON DELETE CASCADE,
  // 回复表.父级回复id 关联 回复表.id,当回复删除时,回复下的回复也删除
  FOREIGN KEY (parent_id) REFERENCES reply(id) ON DELETE CASCADE
);