Files
ai_game/server/sql/schema_v2.sql

567 lines
19 KiB
MySQL
Raw Normal View History

-- ============================================
-- 星域故事汇 完整数据库结构 V2.0
-- 支持AI改写/续写/创作、UGC、社交、计费
-- ============================================
CREATE DATABASE IF NOT EXISTS stardom_story DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
USE stardom_story;
-- ============================================
-- 一、用户体系
-- ============================================
-- 用户主表
CREATE TABLE users (
id BIGINT PRIMARY KEY AUTO_INCREMENT,
openid VARCHAR(100) UNIQUE NOT NULL COMMENT '微信openid',
unionid VARCHAR(100) DEFAULT '' COMMENT '微信unionid',
nickname VARCHAR(100) DEFAULT '' COMMENT '昵称',
avatar_url VARCHAR(500) DEFAULT '' COMMENT '头像',
gender TINYINT DEFAULT 0 COMMENT '0未知 1男 2女',
phone VARCHAR(20) DEFAULT '' COMMENT '手机号',
level INT DEFAULT 1 COMMENT '用户等级',
exp INT DEFAULT 0 COMMENT '经验值',
vip_type TINYINT DEFAULT 0 COMMENT '0普通 1月卡 2年卡 3永久',
vip_expire_at DATETIME DEFAULT NULL COMMENT 'VIP过期时间',
coin_balance INT DEFAULT 0 COMMENT '金币余额',
is_creator BOOLEAN DEFAULT FALSE COMMENT '是否认证创作者',
is_banned BOOLEAN DEFAULT FALSE COMMENT '是否封禁',
ban_reason VARCHAR(255) DEFAULT '',
last_login_at DATETIME DEFAULT NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
INDEX idx_openid (openid),
INDEX idx_unionid (unionid),
INDEX idx_creator (is_creator)
) ENGINE=InnoDB COMMENT='用户主表';
-- 用户统计表(高频更新分离)
CREATE TABLE user_stats (
user_id BIGINT PRIMARY KEY,
total_play_count INT DEFAULT 0 COMMENT '总游玩次数',
total_endings INT DEFAULT 0 COMMENT '解锁结局数',
total_creations INT DEFAULT 0 COMMENT '创作数',
total_ai_uses INT DEFAULT 0 COMMENT 'AI使用次数',
followers_count INT DEFAULT 0 COMMENT '粉丝数',
following_count INT DEFAULT 0 COMMENT '关注数',
likes_received INT DEFAULT 0 COMMENT '获赞数',
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE
) ENGINE=InnoDB COMMENT='用户统计表';
-- 用户关注关系表
CREATE TABLE user_follows (
id BIGINT PRIMARY KEY AUTO_INCREMENT,
follower_id BIGINT NOT NULL COMMENT '关注者',
following_id BIGINT NOT NULL COMMENT '被关注者',
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
UNIQUE KEY uk_follow (follower_id, following_id),
INDEX idx_follower (follower_id),
INDEX idx_following (following_id)
) ENGINE=InnoDB COMMENT='用户关注关系';
-- ============================================
-- 二、故事内容体系
-- ============================================
-- 故事主表(官方+UGC统一
CREATE TABLE stories (
id BIGINT PRIMARY KEY AUTO_INCREMENT,
author_id BIGINT DEFAULT 0 COMMENT '作者ID0为官方',
title VARCHAR(100) NOT NULL COMMENT '标题',
cover_url VARCHAR(500) DEFAULT '' COMMENT '封面',
description TEXT COMMENT '简介',
category VARCHAR(50) NOT NULL COMMENT '分类',
tags VARCHAR(255) DEFAULT '' COMMENT '标签,逗号分隔',
word_count INT DEFAULT 0 COMMENT '字数',
node_count INT DEFAULT 0 COMMENT '节点数',
ending_count INT DEFAULT 0 COMMENT '结局数',
difficulty TINYINT DEFAULT 2 COMMENT '难度 1简单 2普通 3困难',
-- 来源标记
source_type ENUM('official','ugc','ai_generated','ai_assisted') DEFAULT 'official' COMMENT '来源类型',
base_story_id BIGINT DEFAULT NULL COMMENT '基于哪个故事改编',
ai_generation_id BIGINT DEFAULT NULL COMMENT '关联的AI生成记录',
-- 状态控制
status TINYINT DEFAULT 0 COMMENT '0草稿 1审核中 2已发布 3已下架 4已拒绝',
review_note VARCHAR(500) DEFAULT '' COMMENT '审核备注',
is_featured BOOLEAN DEFAULT FALSE COMMENT '是否精选',
is_hot BOOLEAN DEFAULT FALSE COMMENT '是否热门',
is_new BOOLEAN DEFAULT TRUE COMMENT '是否新作',
-- 付费设置
price_type TINYINT DEFAULT 0 COMMENT '0免费 1付费 2广告解锁',
price_coin INT DEFAULT 0 COMMENT '价格(金币)',
free_chapters INT DEFAULT 0 COMMENT '免费章节数',
-- 统计(读多写少可放主表)
play_count INT DEFAULT 0,
like_count INT DEFAULT 0,
collect_count INT DEFAULT 0,
comment_count INT DEFAULT 0,
share_count INT DEFAULT 0,
published_at DATETIME DEFAULT NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
INDEX idx_author (author_id),
INDEX idx_category (category),
INDEX idx_status (status),
INDEX idx_source (source_type),
INDEX idx_featured (is_featured),
INDEX idx_play (play_count),
INDEX idx_created (created_at)
) ENGINE=InnoDB COMMENT='故事主表';
-- 故事节点表
CREATE TABLE story_nodes (
id BIGINT PRIMARY KEY AUTO_INCREMENT,
story_id BIGINT NOT NULL,
node_key VARCHAR(50) NOT NULL COMMENT '节点标识',
parent_node_key VARCHAR(50) DEFAULT '' COMMENT '父节点(用于树形结构)',
chapter_num INT DEFAULT 1 COMMENT '章节号',
-- 内容
content TEXT NOT NULL COMMENT '文本内容',
speaker VARCHAR(50) DEFAULT '' COMMENT '说话角色',
emotion VARCHAR(30) DEFAULT '' COMMENT '情绪标签',
-- 媒体资源
background_image VARCHAR(500) DEFAULT '',
character_images JSON DEFAULT NULL COMMENT '角色立绘数组',
bgm VARCHAR(500) DEFAULT '',
sound_effect VARCHAR(500) DEFAULT '',
voice_url VARCHAR(500) DEFAULT '' COMMENT '语音URL',
-- 结局设置
is_ending BOOLEAN DEFAULT FALSE,
ending_name VARCHAR(100) DEFAULT '',
ending_type ENUM('good','bad','normal','hidden','secret') DEFAULT 'normal',
ending_score INT DEFAULT 0,
ending_cg VARCHAR(500) DEFAULT '' COMMENT '结局CG图',
-- AI标记
is_ai_generated BOOLEAN DEFAULT FALSE,
ai_generation_id BIGINT DEFAULT NULL,
sort_order INT DEFAULT 0,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
INDEX idx_story (story_id),
INDEX idx_node_key (story_id, node_key),
INDEX idx_chapter (story_id, chapter_num),
FOREIGN KEY (story_id) REFERENCES stories(id) ON DELETE CASCADE
) ENGINE=InnoDB COMMENT='故事节点表';
-- 故事选项表
CREATE TABLE story_choices (
id BIGINT PRIMARY KEY AUTO_INCREMENT,
story_id BIGINT NOT NULL,
node_id BIGINT NOT NULL,
text VARCHAR(200) NOT NULL COMMENT '选项文本',
next_node_key VARCHAR(50) NOT NULL,
-- 条件解锁
condition_type ENUM('none','item','attr','ending','vip','ad') DEFAULT 'none',
condition_value VARCHAR(100) DEFAULT '' COMMENT '条件值JSON',
-- 效果
effect_type ENUM('none','attr','item','achievement') DEFAULT 'none',
effect_value VARCHAR(100) DEFAULT '' COMMENT '效果值JSON',
-- AI标记
is_ai_generated BOOLEAN DEFAULT FALSE,
sort_order INT DEFAULT 0,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
INDEX idx_story (story_id),
INDEX idx_node (node_id),
FOREIGN KEY (story_id) REFERENCES stories(id) ON DELETE CASCADE,
FOREIGN KEY (node_id) REFERENCES story_nodes(id) ON DELETE CASCADE
) ENGINE=InnoDB COMMENT='故事选项表';
-- 故事版本表(支持版本回退)
CREATE TABLE story_versions (
id BIGINT PRIMARY KEY AUTO_INCREMENT,
story_id BIGINT NOT NULL,
version_num INT NOT NULL COMMENT '版本号',
nodes_snapshot LONGTEXT NOT NULL COMMENT '节点快照JSON',
change_log VARCHAR(500) DEFAULT '' COMMENT '变更说明',
created_by BIGINT NOT NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
UNIQUE KEY uk_version (story_id, version_num),
INDEX idx_story (story_id)
) ENGINE=InnoDB COMMENT='故事版本表';
-- ============================================
-- 三、AI生成体系
-- ============================================
-- AI生成记录表
CREATE TABLE ai_generations (
id BIGINT PRIMARY KEY AUTO_INCREMENT,
user_id BIGINT NOT NULL,
story_id BIGINT DEFAULT NULL COMMENT '关联故事',
-- 生成类型
gen_type ENUM('rewrite_ending','rewrite_node','continue','create_outline','create_full','polish','translate') NOT NULL,
-- 输入
source_node_key VARCHAR(50) DEFAULT '',
source_content TEXT COMMENT '原内容',
user_prompt TEXT NOT NULL COMMENT '用户指令',
system_prompt TEXT COMMENT '系统提示词',
-- 输出
generated_content LONGTEXT COMMENT '生成内容',
generated_nodes JSON COMMENT '生成的节点结构',
-- 模型信息
model_provider VARCHAR(30) DEFAULT '' COMMENT 'openai/anthropic/local',
model_name VARCHAR(50) DEFAULT '',
temperature DECIMAL(3,2) DEFAULT 0.70,
-- 消耗统计
input_tokens INT DEFAULT 0,
output_tokens INT DEFAULT 0,
total_tokens INT DEFAULT 0,
latency_ms INT DEFAULT 0 COMMENT '响应耗时',
cost_cents INT DEFAULT 0 COMMENT '成本(分)',
-- 状态
status TINYINT DEFAULT 1 COMMENT '0失败 1成功 2处理中',
error_code VARCHAR(50) DEFAULT '',
error_msg TEXT,
-- 用户操作
is_accepted BOOLEAN DEFAULT NULL COMMENT '用户是否采纳',
is_edited BOOLEAN DEFAULT FALSE COMMENT '是否编辑后使用',
is_published BOOLEAN DEFAULT FALSE COMMENT '是否发布',
-- 评价
user_rating TINYINT DEFAULT NULL COMMENT '1-5星评价',
user_feedback TEXT COMMENT '用户反馈',
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
INDEX idx_user (user_id),
INDEX idx_story (story_id),
INDEX idx_type (gen_type),
INDEX idx_status (status),
INDEX idx_created (created_at)
) ENGINE=InnoDB COMMENT='AI生成记录表';
-- AI提示词模板表
CREATE TABLE ai_prompt_templates (
id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(100) NOT NULL,
gen_type VARCHAR(30) NOT NULL,
category VARCHAR(50) DEFAULT '' COMMENT '适用分类',
system_prompt TEXT NOT NULL,
user_prompt_template TEXT NOT NULL COMMENT '用户提示词模板',
variables JSON COMMENT '可用变量说明',
model_recommend VARCHAR(50) DEFAULT '',
temperature_recommend DECIMAL(3,2) DEFAULT 0.70,
is_active BOOLEAN DEFAULT TRUE,
sort_order INT DEFAULT 0,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
INDEX idx_type (gen_type),
INDEX idx_active (is_active)
) ENGINE=InnoDB COMMENT='AI提示词模板';
-- ============================================
-- 四、用户行为体系
-- ============================================
-- 用户游玩进度表
CREATE TABLE user_progress (
id BIGINT PRIMARY KEY AUTO_INCREMENT,
user_id BIGINT NOT NULL,
story_id BIGINT NOT NULL,
current_node_key VARCHAR(50) DEFAULT 'start',
-- 状态
status TINYINT DEFAULT 0 COMMENT '0进行中 1已完成',
play_count INT DEFAULT 1,
play_duration INT DEFAULT 0 COMMENT '游玩时长(秒)',
-- 达成结局
endings_reached JSON COMMENT '达成的结局列表',
best_ending_score INT DEFAULT 0,
-- 存档数据
save_data JSON COMMENT '游戏存档(属性/道具等)',
choices_history JSON COMMENT '选择历史',
-- 互动
is_liked BOOLEAN DEFAULT FALSE,
is_collected BOOLEAN DEFAULT FALSE,
first_play_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
last_play_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
completed_at DATETIME DEFAULT NULL,
UNIQUE KEY uk_user_story (user_id, story_id),
INDEX idx_user (user_id),
INDEX idx_story (story_id),
INDEX idx_status (status)
) ENGINE=InnoDB COMMENT='用户游玩进度';
-- 用户结局收集表
CREATE TABLE user_endings (
id BIGINT PRIMARY KEY AUTO_INCREMENT,
user_id BIGINT NOT NULL,
story_id BIGINT NOT NULL,
node_id BIGINT NOT NULL,
ending_name VARCHAR(100) NOT NULL,
ending_type VARCHAR(20) DEFAULT 'normal',
ending_score INT DEFAULT 0,
choices_path JSON COMMENT '达成路径',
play_duration INT DEFAULT 0 COMMENT '本次游玩时长',
unlocked_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
UNIQUE KEY uk_user_ending (user_id, story_id, ending_name),
INDEX idx_user (user_id),
INDEX idx_story (story_id)
) ENGINE=InnoDB COMMENT='用户结局收集';
-- 用户收藏表
CREATE TABLE user_collections (
id BIGINT PRIMARY KEY AUTO_INCREMENT,
user_id BIGINT NOT NULL,
story_id BIGINT NOT NULL,
folder_name VARCHAR(50) DEFAULT '默认' COMMENT '收藏夹',
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
UNIQUE KEY uk_user_story (user_id, story_id),
INDEX idx_user (user_id),
INDEX idx_folder (user_id, folder_name)
) ENGINE=InnoDB COMMENT='用户收藏';
-- 评论表
CREATE TABLE comments (
id BIGINT PRIMARY KEY AUTO_INCREMENT,
user_id BIGINT NOT NULL,
story_id BIGINT NOT NULL,
parent_id BIGINT DEFAULT NULL COMMENT '父评论ID',
reply_to_user_id BIGINT DEFAULT NULL COMMENT '回复谁',
content TEXT NOT NULL,
like_count INT DEFAULT 0,
status TINYINT DEFAULT 1 COMMENT '0隐藏 1正常 2置顶',
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
INDEX idx_story (story_id),
INDEX idx_user (user_id),
INDEX idx_parent (parent_id)
) ENGINE=InnoDB COMMENT='评论表';
-- ============================================
-- 五、经济体系
-- ============================================
-- 用户AI配额表
CREATE TABLE user_ai_quota (
user_id BIGINT PRIMARY KEY,
-- 每日免费额度
daily_free_total INT DEFAULT 5 COMMENT '每日免费总次数',
daily_free_used INT DEFAULT 0 COMMENT '今日已用',
daily_reset_date DATE COMMENT '重置日期',
-- 购买/赠送额度
purchased_quota INT DEFAULT 0 COMMENT '购买的次数',
gift_quota INT DEFAULT 0 COMMENT '赠送的次数',
-- VIP额度
vip_daily_bonus INT DEFAULT 0 COMMENT 'VIP每日额外次数',
-- 总使用统计
total_used INT DEFAULT 0,
total_tokens_used BIGINT DEFAULT 0,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
) ENGINE=InnoDB COMMENT='用户AI配额';
-- 金币流水表
CREATE TABLE coin_transactions (
id BIGINT PRIMARY KEY AUTO_INCREMENT,
user_id BIGINT NOT NULL,
amount INT NOT NULL COMMENT '正为收入负为支出',
balance_after INT NOT NULL COMMENT '交易后余额',
tx_type ENUM('recharge','purchase','reward','refund','gift','withdraw') NOT NULL,
ref_type VARCHAR(30) DEFAULT '' COMMENT '关联类型',
ref_id BIGINT DEFAULT NULL COMMENT '关联ID',
description VARCHAR(255) DEFAULT '',
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
INDEX idx_user (user_id),
INDEX idx_type (tx_type),
INDEX idx_created (created_at)
) ENGINE=InnoDB COMMENT='金币流水';
-- 订单表
CREATE TABLE orders (
id BIGINT PRIMARY KEY AUTO_INCREMENT,
order_no VARCHAR(64) UNIQUE NOT NULL,
user_id BIGINT NOT NULL,
product_type ENUM('coin','vip','story','ai_quota') NOT NULL,
product_id VARCHAR(50) DEFAULT '',
product_name VARCHAR(100) NOT NULL,
amount_cents INT NOT NULL COMMENT '金额(分)',
pay_channel VARCHAR(30) DEFAULT '' COMMENT '支付渠道',
status TINYINT DEFAULT 0 COMMENT '0待支付 1已支付 2已取消 3已退款',
paid_at DATETIME DEFAULT NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
INDEX idx_user (user_id),
INDEX idx_order_no (order_no),
INDEX idx_status (status)
) ENGINE=InnoDB COMMENT='订单表';
-- ============================================
-- 六、运营与审核
-- ============================================
-- 内容审核表
CREATE TABLE content_reviews (
id BIGINT PRIMARY KEY AUTO_INCREMENT,
content_type ENUM('story','comment','ai_generation','avatar','nickname') NOT NULL,
content_id BIGINT NOT NULL,
user_id BIGINT NOT NULL COMMENT '提交者',
content_snapshot TEXT COMMENT '内容快照',
-- 机审
auto_result TINYINT DEFAULT NULL COMMENT '0通过 1疑似 2违规',
auto_labels JSON COMMENT '机审标签',
auto_score DECIMAL(5,2) DEFAULT NULL,
-- 人审
review_status TINYINT DEFAULT 0 COMMENT '0待审 1通过 2拒绝',
reviewer_id BIGINT DEFAULT NULL,
review_note VARCHAR(500) DEFAULT '',
reviewed_at DATETIME DEFAULT NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
INDEX idx_type_status (content_type, review_status),
INDEX idx_user (user_id),
INDEX idx_created (created_at)
) ENGINE=InnoDB COMMENT='内容审核表';
-- 举报表
CREATE TABLE reports (
id BIGINT PRIMARY KEY AUTO_INCREMENT,
reporter_id BIGINT NOT NULL,
target_type ENUM('story','comment','user') NOT NULL,
target_id BIGINT NOT NULL,
reason_type VARCHAR(30) NOT NULL COMMENT '举报类型',
reason_detail TEXT,
status TINYINT DEFAULT 0 COMMENT '0待处理 1已处理 2已忽略',
handler_id BIGINT DEFAULT NULL,
handle_result VARCHAR(255) DEFAULT '',
handled_at DATETIME DEFAULT NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
INDEX idx_target (target_type, target_id),
INDEX idx_status (status)
) ENGINE=InnoDB COMMENT='举报表';
-- ============================================
-- 七、数据分析
-- ============================================
-- 行为埋点表(按天分区)
CREATE TABLE event_logs (
id BIGINT PRIMARY KEY AUTO_INCREMENT,
user_id BIGINT DEFAULT NULL,
device_id VARCHAR(100) DEFAULT '',
session_id VARCHAR(64) DEFAULT '',
event_name VARCHAR(50) NOT NULL,
event_params JSON,
page_name VARCHAR(50) DEFAULT '',
ref_page VARCHAR(50) DEFAULT '',
platform VARCHAR(20) DEFAULT '' COMMENT 'weapp/h5/app',
app_version VARCHAR(20) DEFAULT '',
os VARCHAR(20) DEFAULT '',
device_model VARCHAR(50) DEFAULT '',
ip VARCHAR(50) DEFAULT '',
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
event_date DATE AS (DATE(created_at)) STORED,
INDEX idx_user (user_id),
INDEX idx_event (event_name),
INDEX idx_date (event_date),
INDEX idx_session (session_id)
) ENGINE=InnoDB COMMENT='行为埋点表'
PARTITION BY RANGE (TO_DAYS(event_date)) (
PARTITION p_default VALUES LESS THAN MAXVALUE
);
-- AI调用统计日表
CREATE TABLE ai_daily_stats (
id INT PRIMARY KEY AUTO_INCREMENT,
stat_date DATE NOT NULL,
gen_type VARCHAR(30) NOT NULL,
model_name VARCHAR(50) DEFAULT '',
call_count INT DEFAULT 0,
success_count INT DEFAULT 0,
fail_count INT DEFAULT 0,
total_input_tokens BIGINT DEFAULT 0,
total_output_tokens BIGINT DEFAULT 0,
total_cost_cents INT DEFAULT 0,
avg_latency_ms INT DEFAULT 0,
p99_latency_ms INT DEFAULT 0,
unique_users INT DEFAULT 0,
UNIQUE KEY uk_date_type (stat_date, gen_type, model_name),
INDEX idx_date (stat_date)
) ENGINE=InnoDB COMMENT='AI调用日统计';
-- ============================================
-- 八、系统配置
-- ============================================
-- 分类配置表
CREATE TABLE categories (
id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(50) NOT NULL,
icon VARCHAR(100) DEFAULT '',
color VARCHAR(20) DEFAULT '',
sort_order INT DEFAULT 0,
is_active BOOLEAN DEFAULT TRUE,
story_count INT DEFAULT 0,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
) ENGINE=InnoDB COMMENT='分类配置';
-- 系统配置表
CREATE TABLE system_configs (
config_key VARCHAR(100) PRIMARY KEY,
config_value TEXT NOT NULL,
description VARCHAR(255) DEFAULT '',
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
) ENGINE=InnoDB COMMENT='系统配置';
-- 敏感词表
CREATE TABLE sensitive_words (
id INT PRIMARY KEY AUTO_INCREMENT,
word VARCHAR(50) NOT NULL,
category VARCHAR(30) DEFAULT 'general',
level TINYINT DEFAULT 1 COMMENT '1警告 2禁止',
is_active BOOLEAN DEFAULT TRUE,
UNIQUE KEY uk_word (word),
INDEX idx_category (category)
) ENGINE=InnoDB COMMENT='敏感词表';