视频加载失败

MySQL 表结构设计:内容站的十张表

749 字
3 分钟
MySQL 表结构设计:内容站的十张表
MySQL 表结构设计:内容站的十张表

内容站的十张表

后台真正需要维护的对象并不多。把下面这些表设计清楚,绝大多数个人站点都够用了。

核心表

表 用途
blog_post 文章与草稿
blog_category 分类
blog_tag 标签
blog_post_tag 文章标签关联
blog_comment 评论与留言
blog_dynamic 动态
blog_project 项目
blog_album / blog_photo 相册与照片
blog_friend 友链
blog_page / blog_setting 单页与站点设置

几个容易忽略的字段

  • slug:对外 URL 的稳定标识,发布后尽量不要改;
  • published_at:与 create_time 分开,草稿可以提前创建;
  • status:文章用 1/0 表示发布/草稿,评论用 1/0/2 表示通过/待审/拒绝;
  • comment_count:冗余计数,审核后重算,减少列表页的子查询。

索引

列表页最常见的查询是“已发布 + 按时间倒序”,因此建立联合索引:

KEY idx_blog_post_status_time (status, published_at)

评论按对象查询,索引为 (target_type, target_id, status)。其余表按 slug 建唯一索引即可。

审计字段

每张业务表都保留 create_by、update_by、create_time、update_time。它们不只是合规要求,排障时也能快速回答“这条数据是什么时候、被谁改的”。

字符集

统一使用 utf8mb4,否则 emoji 和部分生僻字会写入失败。排序规则使用数据库默认值即可,中文检索以应用层为准。

文章分享

如果这篇文章对你有帮助,欢迎分享给更多人!

MySQL 表结构设计:内容站的十张表
http://dzs.asia/posts/mysql-content-schema/
作者
Duan
发布于
2026-10-21
许可协议
CC BY-NC-SA 4.0

评论区

Profile Image of the Author
Duan
Hello World!
公告
博客已接入 Spring Boot + MySQL 后台,文章、动态、相册和评论都可以在线维护。
分类
标签
最新动态
站点统计
文章
6
分类
4
标签
10
总字数
0
运行时长
0 天
最后活动
0 天前
站点信息
构建平台
Local
博客版本
Firefly vunknown
文章许可
CC BY-NC-SA 4.0

当前页面没有目录

文章目录

当前页面没有目录