Discuz数据库字典是描述其MySQL表结构及关系的文档,涵盖用户、帖子、版块等核心数据表。常见表包括pre_common_member(用户信息)、pre_forum_thread(主题)、pre_forum_post(回帖),通过uid、tid等字段关联。字典详细说明字段类型、索引及表间逻辑,为二次开发、数据迁移或性能优化提供结构参考,帮助开发者理解Discuz的数据存储机制与业务逻辑关联。
在Discuz!系统的二次开发或性能优化过程中,深入理解其数据库结构是开发者的必修课,本文基于Discuz! X3.4版本,剖析核心数据表的设计逻辑与关键字段功能,为开发者提供结构化的数据字典参考。
1、pre_common_member(用户主表)
字段名 | 类型 | 说明 | |
uid | int(10) | 用户唯一标识 | |
username | char(15) | 登录用户名(唯一) | |
password | char(32) | MD5加密后的密码 | |
char(32) | 绑定邮箱(唯一) | ||
regdate | int(10) | 注册时间戳 | |
groupid | smallint(6) | 关联用户组ID |
2、pre_common_member_profile(用户扩展信息)
字段名 | 类型 | 说明 | |
uid | int(10) | 用户ID(外键) | |
realname | varchar(50) | 真实姓名 | |
gender | tinyint(1) | 性别(0未知/1男/2女) |
1、pre_forum_thread(主题表)
字段名 | 类型 | 说明 | |
tid | int(10) | 主题ID(主键) | |
fid | smallint(6) | 所属版块ID | |
author | varchar(15) | 发帖人用户名 | |
subject | varchar(80) | 主题标题 | |
dateline | int(10) | 发帖时间戳 | |
views | int(10) | 浏览计数 |
2、pre_forum_post表)
字段名 | 类型 | 说明 | |
pid | int(10) | 帖子ID(主键) | |
tid | int(10) | 关联主题ID | |
message | mediumtext | 帖子正文(HTML格式) | |
useip | varchar(45) | 发帖IP地址 |
1、外键关联规则
用户组权限体系:pre_common_member.groupid
→pre_common_usergroup.groupid
版块层级结构:pre_forum_forum.fup
→pre_forum_forum.fid
内容审核流程:pre_forum_post.modwork
→pre_common_moderate.mid
2、高性能索引策略
-主题表的热门查询优化 ALTER TABLE pre_forum_thread ADD INDEX idx_fid_displayorder (fid, displayorder); -用户表的快速检索优化 CREATE UNIQUE INDEX idx_username ON pre_common_member(username);
1、性能调优实践
分析pre_common_session
表的会话数据量
监控pre_forum_post
表的增长速度
优化pre_common_member_count
的积分统计逻辑
2、二次开发示例
// 获取用户发帖量统计 $threadcount = C::t('forum_thread')->count_by_authorid($uid); // 查询版块最新主题 $threadlist = C::t('forum_thread')->fetch_all_by_fid($fid, 0, 10);
1、字符集规范:所有文本字段采用utf8mb4
编码
2、数据归档机制:定期清理pre_common_credit_log
日志表
3、字段保留值:pre_forum_thread.closed
包含特殊状态标记(-1:回收站)
> 本文数据来源于Discuz!官方开源代码库及技术文档,具体实现细节可能因版本差异有所变化,建议开发者结合MySQL的SHOW CREATE TABLE
命令获取最新表结构,并通过EXPLAIN
语句分析查询执行计划。