Skip to content

Commit d2cdbd8

Browse files
committed
refactor: optimize table structure design for module of article
1 parent 6a1837f commit d2cdbd8

1 file changed

Lines changed: 142 additions & 0 deletions

File tree

sql/blog-article-ddl.sql

Lines changed: 142 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,142 @@
1+
2+
3+
DROP TABLE IF EXISTS article;
4+
CREATE TABLE article
5+
(
6+
id BIGINT NOT NULL PRIMARY KEY,
7+
title VARCHAR(256) NOT NULL COMMENT '标题',
8+
summary VARCHAR(5000) DEFAULT '' COMMENT '总结概要',
9+
keywords VARCHAR(1000) DEFAULT '' COMMENT '文章关键字,直接用于meta标签,SEO',
10+
path VARCHAR(128) NOT NULL COMMENT '文章的链接路径,path组成为:/category-code/id混淆后的唯一串',
11+
content TEXT DEFAULT NULL COMMENT '文章内容',
12+
cover_img VARCHAR(512) DEFAULT '' COMMENT '封面图URL',
13+
14+
released BIT DEFAULT 0 COMMENT '是否发布:0-草稿 1-发布',
15+
commented BIT DEFAULT 0 COMMENT '是否可以评论:0-不可评论 1-可以评论',
16+
deleted BIT DEFAULT 0 COMMENT '0-False-未删除, 1-True-已删除',
17+
18+
create_by BIGINT DEFAULT 0,
19+
create_time DATETIME DEFAULT NOW(),
20+
update_by BIGINT DEFAULT 0,
21+
update_time DATETIME DEFAULT NULL ON UPDATE NOW()
22+
) COMMENT '文章主体';
23+
24+
DROP TABLE IF EXISTS article_category;
25+
CREATE TABLE article_category
26+
(
27+
id BIGINT NOT NULL PRIMARY KEY,
28+
29+
name VARCHAR(32) NOT NULL COMMENT '分类名称',
30+
code VARCHAR(16) NOT NULL UNIQUE COMMENT '分类编码',
31+
description VARCHAR(1024) DEFAULT '' COMMENT '分类描述',
32+
color VARCHAR(16) DEFAULT '' COMMENT '分类颜色',
33+
icon_url VARCHAR(512) DEFAULT '' COMMENT '分类的图标URL',
34+
pid BIGINT DEFAULT 0 COMMENT '上一级分类',
35+
36+
status BIT DEFAULT 0 COMMENT '状态:0-无效 1-有效',
37+
deleted BIT DEFAULT 0 COMMENT '0-False-未删除, 1-True-已删除',
38+
39+
create_by BIGINT DEFAULT 0,
40+
create_time DATETIME DEFAULT NOW(),
41+
update_by BIGINT DEFAULT 0,
42+
update_time DATETIME DEFAULT NULL ON UPDATE NOW(),
43+
INDEX idx_pid (pid)
44+
) COMMENT '文章分类';
45+
46+
DROP TABLE IF EXISTS article_category_relation;
47+
CREATE TABLE article_category_relation
48+
(
49+
article_id BIGINT NOT NULL COMMENT '文章ID',
50+
category_id BIGINT NOT NULL COMMENT '分类ID',
51+
PRIMARY KEY (article_id, category_id)
52+
) COMMENT '文章与分类的关联,一篇文章可以有多个分类';
53+
54+
DROP TABLE IF EXISTS article_author;
55+
CREATE TABLE article_author
56+
(
57+
id BIGINT NOT NULL PRIMARY KEY,
58+
59+
nick_name VARCHAR(64) NOT NULL COMMENT '笔名',
60+
real_name VARCHAR(32) DEFAULT '' COMMENT '真实姓名',
61+
description VARCHAR(2048) DEFAULT '' COMMENT '描述',
62+
63+
email VARCHAR(128) DEFAULT '' COMMENT '用户邮箱',
64+
phone VARCHAR(128) DEFAULT '' COMMENT '用户手机号',
65+
address VARCHAR(128) DEFAULT '' COMMENT '地址',
66+
birthday DATETIME DEFAULT NULL COMMENT '生日',
67+
gender INT DEFAULT 1 COMMENT '1-男; 0-女;2-未知',
68+
69+
status BIT DEFAULT 0 COMMENT '状态:0-无效 1-有效',
70+
deleted BIT DEFAULT 0 COMMENT '0-False-未删除, 1-True-已删除',
71+
create_by BIGINT DEFAULT 0,
72+
create_time DATETIME DEFAULT NOW(),
73+
update_by BIGINT DEFAULT 0,
74+
update_time DATETIME DEFAULT NULL ON UPDATE NOW()
75+
) COMMENT '文章作者';
76+
77+
DROP TABLE IF EXISTS article_author_relation;
78+
CREATE TABLE article_author_relation
79+
(
80+
article_id BIGINT NOT NULL COMMENT '文章ID',
81+
author_id BIGINT NOT NULL COMMENT '作者ID',
82+
PRIMARY KEY (article_id, author_id)
83+
) ENGINE = InnoDB COMMENT '文章与作者的关联,一篇文章可以有多个作者';
84+
85+
DROP TABLE IF EXISTS article_comment;
86+
CREATE TABLE article_comment
87+
(
88+
id BIGINT NOT NULL PRIMARY KEY,
89+
`article_id` BIGINT NOT NULL COMMENT '被评论文章ID',
90+
91+
-- 评论者(注意,整合到业务上时,一般只需要记录评论者ID)
92+
commentator_id BIGINT DEFAULT 0 COMMENT '评论者ID',
93+
commentator_name VARCHAR(50) DEFAULT '' COMMENT '评论者名称',
94+
commentator_email VARCHAR(100) DEFAULT '' COMMENT '评论人的邮箱',
95+
commentator_link VARCHAR(50) DEFAULT '' COMMENT '评论者的拓展链接,如个人网站地址',
96+
commentator_ip VARCHAR(20) DEFAULT '' COMMENT '评论者的ip地址',
97+
content VARCHAR(2048) NOT NULL COMMENT '评论内容',
98+
99+
`root_id` BIGINT DEFAULT 0 COMMENT '根级父评论,顶级父评论ID,如果为0表示当前记录没有父评论,也即为顶级评论',
100+
`pid` BIGINT DEFAULT 0 COMMENT '父评论ID,此条评论回复的是谁。如果为0表示当前记录没有父评论',
101+
`pname` VARCHAR(20) DEFAULT '' COMMENT '父评论名称,此条评论回复的是谁。如果为空则表示没有父评论或者没有赋值',
102+
103+
`released` BIT DEFAULT 0 COMMENT '是否发布评论:0-未审核、不发布,1-审核通过、发布',
104+
deleted BIT DEFAULT 0 COMMENT '0-False-未删除, 1-True-已删除',
105+
create_by BIGINT DEFAULT 0,
106+
create_time DATETIME DEFAULT NOW(),
107+
update_by BIGINT DEFAULT 0,
108+
update_time DATETIME DEFAULT NULL ON UPDATE NOW(),
109+
INDEX idx_article_id (article_id)
110+
) COMMENT '文章评论';
111+
112+
DROP TABLE IF EXISTS article_file;
113+
CREATE TABLE article_file
114+
(
115+
id BIGINT AUTO_INCREMENT PRIMARY KEY,
116+
article_id BIGINT DEFAULT 0 COMMENT '文章id',
117+
file_link VARCHAR(512) NOT NULL COMMENT '文件地址',
118+
file_type VARCHAR(10) NOT NULL COMMENT '文件类型:text文本、image图片、video视频、audio音频、zip压缩包、bin二进制数据',
119+
120+
deleted BIT DEFAULT 0 COMMENT '0-False-未删除, 1-True-已删除',
121+
create_by BIGINT DEFAULT 0,
122+
create_time DATETIME DEFAULT NOW(),
123+
update_by BIGINT DEFAULT 0,
124+
update_time DATETIME DEFAULT NULL ON UPDATE NOW()
125+
) COMMENT '文章静态资源文件(图片、视频、音乐、文档等)';
126+
127+
DROP TABLE IF EXISTS article_visit_log;
128+
CREATE TABLE article_visit_log
129+
(
130+
id BIGINT AUTO_INCREMENT PRIMARY KEY COMMENT '主键ID',
131+
article_id BIGINT NOT NULL COMMENT '文章ID',
132+
user_id BIGINT DEFAULT 0 COMMENT '用户ID(未登录则为空或0)',
133+
134+
ip VARCHAR(64) COMMENT '访问IP',
135+
ip_location VARCHAR(128) COMMENT 'IP解析的地理位置(省市区)',
136+
user_agent VARCHAR(512) COMMENT 'User-Agent',
137+
referer_url VARCHAR(512) COMMENT '来源页面URL',
138+
139+
time_use INT DEFAULT 0 COMMENT '请求耗时',
140+
visit_time DATETIME DEFAULT NOW() COMMENT '访问时间',
141+
INDEX idx_article_id (article_id)
142+
) COMMENT ='文章访问日志表';

0 commit comments

Comments
 (0)