返回
数据库设计-Spring Boot + Vue.js个人博客实战教程(七)
后端
2023-11-28 10:34:58
前言
至此,项目的基础配置已基本上完成了,后续用到其他的配置再添加,下面我们将进行数据库的设计,根据我们的功能介绍,并将每个功能用的字段进行设计,这个很重要。我们做的是个人博客,最大的数据也就是我们发布的文章,文章里面有分类、标签、评论等。
数据库设计
文章表
文章表是博客的核心表,存储了文章的基本信息。字段包括:
id
:文章的唯一标识符,自增主键。title
:文章的标题,不能为空。content
:文章的内容,不能为空。category_id
:文章所属的分类ID,外键。tag_ids
:文章的标签ID,以逗号分隔的字符串。author_id
:文章的作者ID,外键。create_time
:文章的创建时间,自动填充。update_time
:文章的更新时间,自动填充。status
:文章的状态,包括草稿、已发布、已删除等。
分类表
分类表存储了文章的分类信息。字段包括:
id
:分类的唯一标识符,自增主键。name
:分类的名称,不能为空。parent_id
:分类的父分类ID,外键。description
:分类的。
标签表
标签表存储了文章的标签信息。字段包括:
id
:标签的唯一标识符,自增主键。name
:标签的名称,不能为空。description
:标签的。
评论表
评论表存储了文章的评论信息。字段包括:
id
:评论的唯一标识符,自增主键。content
:评论的内容,不能为空。article_id
:评论所属的文章ID,外键。author_id
:评论的作者ID,外键。create_time
:评论的创建时间,自动填充。status
:评论的状态,包括已批准、未批准、已删除等。
用户表
用户表存储了博客用户的相关信息。字段包括:
id
:用户的唯一标识符,自增主键。username
:用户的用户名,不能为空,唯一。password
:用户的密码,不能为空。email
:用户的邮箱,不能为空,唯一。role
:用户的角色,包括管理员、编辑、作者等。create_time
:用户的创建时间,自动填充。update_time
:用户的更新时间,自动填充。status
:用户的状态,包括已激活、已禁用、已删除等。
实体类
实体类是用来映射数据库表的Java类。每个实体类对应一个数据库表,实体类的属性对应数据库表的字段。
@Entity
@Table(name = "t_article")
public class Article {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Column(nullable = false)
private String title;
@Column(nullable = false)
private String content;
@Column(name = "category_id")
private Long categoryId;
@Column(name = "tag_ids")
private String tagIds;
@Column(name = "author_id")
private Long authorId;
@Column(name = "create_time")
@CreationTimestamp
private Date createTime;
@Column(name = "update_time")
@UpdateTimestamp
private Date updateTime;
@Column(nullable = false)
private String status;
//省略其他字段和方法
}
@Entity
@Table(name = "t_category")
public class Category {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Column(nullable = false)
private String name;
@Column(name = "parent_id")
private Long parentId;
@Column(nullable = false)
private String description;
//省略其他字段和方法
}
@Entity
@Table(name = "t_tag")
public class Tag {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Column(nullable = false)
private String name;
@Column(nullable = false)
private String description;
//省略其他字段和方法
}
@Entity
@Table(name = "t_comment")
public class Comment {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Column(nullable = false)
private String content;
@Column(name = "article_id")
private Long articleId;
@Column(name = "author_id")
private Long authorId;
@Column(name = "create_time")
@CreationTimestamp
private Date createTime;
@Column(nullable = false)
private String status;
//省略其他字段和方法
}
@Entity
@Table(name = "t_user")
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Column(nullable = false, unique = true)
private String username;
@Column(nullable = false)
private String password;
@Column(nullable = false, unique = true)
private String email;
@Column(nullable = false)
private String role;
@Column(name = "create_time")
@CreationTimestamp
private Date createTime;
@Column(name = "update_time")
@UpdateTimestamp
private Date updateTime;
@Column(nullable = false)
private String status;
//省略其他字段和方法
}
总结
通过以上步骤,我们完成了数据库的设计和实体类的定义。接下来,我们将进行数据库表的创建和初始化。