博客 / CMS 数据库表结构设计

大多数博客和 CMS 平台背后的标准内容模型。文章归属于作者和分类,通过关联表携带多个标签,并收集层级评论

表结构(SQL)

sql 复制代码
CREATE TABLE users (
  id INT PRIMARY KEY AUTO_INCREMENT,
  username VARCHAR(50) NOT NULL UNIQUE,
  email VARCHAR(254) NOT NULL UNIQUE,
  display_name VARCHAR(120),
  created_at DATETIME NOT NULL
);

CREATE TABLE categories (
  id INT PRIMARY KEY AUTO_INCREMENT,
  name VARCHAR(100) NOT NULL,
  slug VARCHAR(120) NOT NULL UNIQUE
);

CREATE TABLE posts (
  id INT PRIMARY KEY AUTO_INCREMENT,
  author_id INT NOT NULL,
  category_id INT,
  title VARCHAR(200) NOT NULL,
  slug VARCHAR(220) NOT NULL UNIQUE,
  body TEXT NOT NULL,
  status VARCHAR(20) NOT NULL,
  published_at DATETIME,
  FOREIGN KEY (author_id) REFERENCES users(id),
  FOREIGN KEY (category_id) REFERENCES categories(id)
);

CREATE TABLE tags (
  id INT PRIMARY KEY AUTO_INCREMENT,
  name VARCHAR(60) NOT NULL UNIQUE
);

CREATE TABLE post_tags (
  post_id INT NOT NULL,
  tag_id INT NOT NULL,
  PRIMARY KEY (post_id, tag_id),
  FOREIGN KEY (post_id) REFERENCES posts(id),
  FOREIGN KEY (tag_id) REFERENCES tags(id)
);

CREATE TABLE comments (
  id INT PRIMARY KEY AUTO_INCREMENT,
  post_id INT NOT NULL,
  author_id INT,
  parent_id INT,
  body TEXT NOT NULL,
  created_at DATETIME NOT NULL,
  FOREIGN KEY (post_id) REFERENCES posts(id),
  FOREIGN KEY (author_id) REFERENCES users(id),
  FOREIGN KEY (parent_id) REFERENCES comments(id)
);

查看erdiagram在线可视化展示

相关推荐
这个DBA有点耶3 小时前
时序数据库选型:吞吐、压缩与查询延迟的均衡之术
数据库·sql·架构·时序数据库·dba
invicinble4 小时前
sql层面语法的总结(mysql层面语法,主要侧重于sql的查询相关的信息量积累)
sql·mysql·oracle
suoyue_zhan5 小时前
SQL经典案例之数据库的CTE递归循环使用
数据库·sql
zhangjw345 小时前
MySQL数据库零基础入门,数据库原理、SQL详解、库表操作、字段约束、基础查询全覆盖
数据库·sql·mysql
JdSnE27zv6 小时前
SQLite内存数据库
数据库·sql·sqlite
IvorySQL6 小时前
PostgreSQL 19 新特性:基于 SQL/PGQ 实现图数据查询
数据库·sql·postgresql
持敬chijing1 天前
Web渗透之SQL注入-二次注入(Second-Order SQL Injection)
sql·安全·web安全·网络安全·网络攻击模型·安全威胁分析
这个DBA有点耶1 天前
时序数据库深度对比:2026 年主流 TSDB 架构演进与选型指南
数据库·sql·云原生·架构·运维开发·时序数据库
计算机安禾1 天前
【数据库系统原理】第9篇:SQL的结构化思维:DDL、DML与DCL的职责分离
数据库·sql·oracle