Database Design

Clear Notes 博客系统数据库表结构

根据当前前端页面的文章列表、精选内容、专题集合、订阅表单和未来博客后台需求,设计以下关系型数据库结构。

12数据表
4核心模块
MySQL推荐数据库
Overview

模块划分

内容管理

文章、分类、标签、专题、媒体资源,支撑首页文章列表、精选卡片和专题展示。

用户与权限

作者、管理员和登录身份管理,方便后续扩展后台发布、编辑、审核能力。

互动与订阅

评论、浏览量、点赞、邮件订阅,承接当前订阅表单和未来文章互动。

站点配置

导航、首页区块、SEO 配置等可运营内容,减少硬编码。

Tables

全部表结构

用户与作者

users

保存后台用户、作者资料和登录身份。

字段名类型约束说明
idBIGINT UNSIGNEDPK, AUTO_INCREMENT用户 ID
usernameVARCHAR(50)UNIQUE, NOT NULL登录账号
display_nameVARCHAR(80)NOT NULL页面展示名称
emailVARCHAR(120)UNIQUE, NOT NULL邮箱
password_hashVARCHAR(255)NOT NULL加密后的密码
avatar_urlVARCHAR(255)NULL头像地址
bioVARCHAR(500)NULL作者简介
roleENUM('admin','editor','author')DEFAULT 'author'用户角色
statusENUM('active','disabled')DEFAULT 'active'账号状态
created_atDATETIMENOT NULL创建时间
updated_atDATETIMENOT NULL更新时间
文章主体

posts

保存博客文章正文、摘要、发布状态和首页展示所需信息。

字段名类型约束说明
idBIGINT UNSIGNEDPK, AUTO_INCREMENT文章 ID
author_idBIGINT UNSIGNEDFK users(id), NOT NULL作者 ID
category_idBIGINT UNSIGNEDFK categories(id)主分类 ID
cover_media_idBIGINT UNSIGNEDFK media_assets(id), NULL封面资源
titleVARCHAR(180)NOT NULL文章标题
slugVARCHAR(200)UNIQUE, NOT NULL文章 URL 标识
excerptVARCHAR(500)NULL文章摘要
contentLONGTEXTNOT NULL文章正文
content_formatENUM('html','markdown')DEFAULT 'markdown'正文格式
statusENUM('draft','published','archived')DEFAULT 'draft'发布状态
is_featuredBOOLEANDEFAULT FALSE是否精选
featured_labelVARCHAR(40)NULL精选卡片标签
reading_minutesSMALLINT UNSIGNEDDEFAULT 1预计阅读分钟
published_atDATETIMENULL, INDEX发布时间
created_atDATETIMENOT NULL创建时间
updated_atDATETIMENOT NULL更新时间
分类

categories

对应前端文章元信息中的 CSS、JavaScript、复盘等分类。

字段名类型约束说明
idBIGINT UNSIGNEDPK, AUTO_INCREMENT分类 ID
nameVARCHAR(60)UNIQUE, NOT NULL分类名称
slugVARCHAR(80)UNIQUE, NOT NULLURL 标识
descriptionVARCHAR(255)NULL分类描述
sort_orderINTDEFAULT 0排序值
created_atDATETIMENOT NULL创建时间
updated_atDATETIMENOT NULL更新时间
标签

tags

用于为文章增加更细粒度的检索维度。

字段名类型约束说明
idBIGINT UNSIGNEDPK, AUTO_INCREMENT标签 ID
nameVARCHAR(60)UNIQUE, NOT NULL标签名称
slugVARCHAR(80)UNIQUE, NOT NULLURL 标识
colorCHAR(7)NULL标签颜色,如 #2f6fbb
created_atDATETIMENOT NULL创建时间
文章标签关系

post_tags

文章与标签的多对多关系表。

字段名类型约束说明
post_idBIGINT UNSIGNEDPK, FK posts(id)文章 ID
tag_idBIGINT UNSIGNEDPK, FK tags(id)标签 ID
created_atDATETIMENOT NULL关联时间
专题集合

collections

对应首页“前端基础、页面练习、学习复盘”等专题卡片。

字段名类型约束说明
idBIGINT UNSIGNEDPK, AUTO_INCREMENT专题 ID
titleVARCHAR(100)NOT NULL专题标题
slugVARCHAR(120)UNIQUE, NOT NULLURL 标识
summaryVARCHAR(300)NULL专题简介
display_noVARCHAR(8)NULL前端显示编号,如 01
cover_media_idBIGINT UNSIGNEDFK media_assets(id), NULL封面资源
sort_orderINTDEFAULT 0排序值
is_visibleBOOLEANDEFAULT TRUE是否展示
created_atDATETIMENOT NULL创建时间
updated_atDATETIMENOT NULL更新时间
专题文章关系

collection_posts

管理专题中包含哪些文章以及文章在专题内的顺序。

字段名类型约束说明
collection_idBIGINT UNSIGNEDPK, FK collections(id)专题 ID
post_idBIGINT UNSIGNEDPK, FK posts(id)文章 ID
sort_orderINTDEFAULT 0专题内排序
created_atDATETIMENOT NULL加入时间
媒体资源

media_assets

保存文章封面、头像、专题图等文件资源。

字段名类型约束说明
idBIGINT UNSIGNEDPK, AUTO_INCREMENT资源 ID
uploader_idBIGINT UNSIGNEDFK users(id), NULL上传者
file_urlVARCHAR(255)NOT NULL文件地址
file_nameVARCHAR(160)NOT NULL文件名
mime_typeVARCHAR(80)NOT NULL文件 MIME 类型
file_sizeINT UNSIGNEDNULL文件大小,单位 byte
alt_textVARCHAR(180)NULL图片替代文本
created_atDATETIMENOT NULL上传时间
评论

comments

为后续文章详情页增加评论与回复能力。

字段名类型约束说明
idBIGINT UNSIGNEDPK, AUTO_INCREMENT评论 ID
post_idBIGINT UNSIGNEDFK posts(id), NOT NULL文章 ID
parent_idBIGINT UNSIGNEDFK comments(id), NULL父评论 ID
user_idBIGINT UNSIGNEDFK users(id), NULL登录用户 ID
guest_nameVARCHAR(80)NULL访客昵称
guest_emailVARCHAR(120)NULL访客邮箱
contentTEXTNOT NULL评论内容
statusENUM('pending','approved','spam')DEFAULT 'pending'审核状态
created_atDATETIMENOT NULL创建时间
updated_atDATETIMENOT NULL更新时间
订阅

newsletter_subscribers

承接当前页面底部邮箱订阅表单。

字段名类型约束说明
idBIGINT UNSIGNEDPK, AUTO_INCREMENT订阅 ID
emailVARCHAR(120)UNIQUE, NOT NULL订阅邮箱
statusENUM('subscribed','unsubscribed')DEFAULT 'subscribed'订阅状态
sourceVARCHAR(80)DEFAULT 'home_newsletter'订阅来源
confirmed_atDATETIMENULL确认订阅时间
created_atDATETIMENOT NULL提交时间
updated_atDATETIMENOT NULL更新时间
文章统计

post_stats

独立保存浏览、点赞、评论数,避免高频统计直接写文章主表。

字段名类型约束说明
post_idBIGINT UNSIGNEDPK, FK posts(id)文章 ID
view_countINT UNSIGNEDDEFAULT 0浏览数
like_countINT UNSIGNEDDEFAULT 0点赞数
comment_countINT UNSIGNEDDEFAULT 0评论数
last_viewed_atDATETIMENULL最近浏览时间
updated_atDATETIMENOT NULL更新时间
站点配置

site_settings

保存站点标题、SEO、首页文案和其他可运营配置。

字段名类型约束说明
idBIGINT UNSIGNEDPK, AUTO_INCREMENT配置 ID
setting_keyVARCHAR(100)UNIQUE, NOT NULL配置键
setting_valueJSONNOT NULL配置值
descriptionVARCHAR(255)NULL配置说明
updated_byBIGINT UNSIGNEDFK users(id), NULL最后修改人
created_atDATETIMENOT NULL创建时间
updated_atDATETIMENOT NULL更新时间
Relations

主要关系