MySQL 表结构设计:内容站的十张表
749 字
3 分钟
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/相关文章智能推荐
1
用 Vue 3 重写博客前端:从 Astro 到 SPA
把静态博客改成 Vue 单页应用,同时保留原有的视觉语言。记录组件拆分、数据契约与样式复用的取舍。
2
Spring Boot + MySQL:为个人博客设计一套内容 API
从表结构到接口分层,聊聊一个小型内容站需要哪些接口,以及哪些“通用能力”其实不必过度设计。
随机文章随机推荐













