dede数据库表有哪些核心字段与作用?

99ANYc3cd6
预计阅读时长 20 分钟
位置: 首页 DEDE建站 正文

DedeCMS 的数据库设计遵循了经典的内容管理系统架构,其核心思想是与表现分离”“模型与字段分离”,理解其表结构,对于进行二次开发、数据迁移、性能优化和故障排查都至关重要。

dede数据库表分析
(图片来源网络,侵删)

核心设计理念

在分析具体表之前,先理解其核心理念:

  1. 内容与表现分离:文章的内容(标题、正文)存储在数据库中,而它的最终展示样式(如文章列表页、内容页)则由模板文件(.htm)决定,数据库只负责存储数据,不负责如何显示。
  2. 模型与字段分离:这是 DedeCMS 的一个重要特性,早期版本所有文章都存入 dede_archives 表,字段固定,后来升级为“模型”系统,允许创建不同的内容模型(如文章、软件、图集、商品等),每个模型可以自定义不同的字段(如软件的版本、大小,商品的规格、价格等),这些自定义字段会存储在 dede_addonXX (XX代表模型ID) 这类附加表中。
  3. 角色与权限分离:通过不同的会员组 (dede_arctype) 和后台用户 (dede_admin) 来控制谁能发布、编辑、审核什么内容。

核心数据表分类与详解

我们可以将 DedeCMS 的数据表分为以下几大类:

这是整个系统的基石,存储了网站最核心的内容数据。

表名 中文名称 核心作用 关键字段解析
dede_archives 文章主表 模型的“总入口”,无论你创建什么模型(文章、软件、图集),其最基本的信息(标题、关键词、作者、发布时间、ID等)都会先存入此表。 id (主键, 内容唯一ID)
typeid (栏目ID, 关联到dede_arctype)
typeid2 (副栏目ID)
title (文章标题)
shorttitle (短标题)<brwriter (作者)<brsource (来源)<brpubdate (发布时间)<brsenddate (录入时间)<brflag (属性, 如'c'推荐,'h'头条)<brismake (是否生成静态页)<brarcrank (审核状态, 0为已审核)<brclick (点击量)
dede_addonXX 附加表/模型表 存储不同模型的“自定义字段”XX是模型ID,文章模型可能对应dede_addonarticle,软件模型对应dede_addonsoft,具体字段由你在后台创建模型时定义。 aid (关联ID, 对应dede_archives表的id)
其他字段如body(文章正文)、filetype(软件类型)、language(编程语言)等,均为自定义字段。
dede_arctype 栏目表 存储网站的所有栏目(分类)信息,是内容分类的核心。 id (主键, 栏目ID)
reid (父栏目ID, 用于构建多级栏目)<brtypename (栏目名称)<brtypedir (栏目目录, 用于生成URL路径)<brisdefault (是否为默认栏目)<brishidden (是否隐藏)<brcorank (排序权重)
dede_arcmulti 专题表 用于创建专题,将不同栏目下的文章聚合在一起。 id (专题ID)<brtypeid (包含的栏目ID列表)<brtitle (专题名称)<brcontent (专题介绍)

关系图

dede数据库表分析
(图片来源网络,侵删)
[栏目表 dede_arctype]
    | (typeid)
    |
    V
[文章主表 dede_archives] -- (aid) --> [附加表 dede_addonXX]
    | (typeid)
    |
    V
[专题表 dede_arcmulti]

会员与权限表

表名 中文名称 核心作用 关键字段解析
dede_member 会员主表 存储所有注册会员的基本信息。 mid (主键, 会员ID)
uname (用户名)<brpwd (密码, 加密存储)<bremail (邮箱)<brscores (积分)<brmoney (余额)
dede_member_space 会员空间表 存储会员空间的个性化信息,如头像、昵称、简介等。 mid (关联dede_membermid)<br`spacename` (空间名称)<br> sign (个性签名)
dede_arcmember 会员投稿表 记录会员发布的文章信息,关联到dede_archives aid (文章ID, 关联dede_archives)<brmid (会员ID, 关联dede_member)<brdtime (投稿时间)
dede_admin 后台管理员表 存储后台管理员账户。 id (主键)
userid (管理员工号)<brpwd (密码)<brtypeid (管理权限组ID, 关联dede_admintype)
dede_admintype 管理员组表 定义后台管理员的权限范围。 id (组ID)<brtypename (组名称)<brpurviews (权限JSON字符串)

评论与互动表

表名 中文名称 核心作用 关键字段解析
dede_feedback 评论表 存储用户对内容的评论。 id (评论ID)<braid (被评论内容的ID, 关联dede_archives)<brtypeid (栏目ID)<brusername (评论者)<brarctitle (被评论内容的标题)<brdtime (评论时间)<brmsg (评论内容)
dede_digg 踩/顶表 记录用户对内容的顶/踩操作。 id (主键)<braid (内容ID)<brip (用户IP)<brdiggtype (操作类型, 1为顶, -1为踩)

模板与风格表

表名 中文名称 核心作用 关键字段解析
dede_templets 模板文件表 存储系统中可用的模板文件信息,方便在后台管理。 id (主键)<brtempletpath (模板文件路径)<brtypename (模板名称)
dede_skin 风色表 定义网站的风格(一套模板+一套CSS+一套JS)。 id (风格ID)<brsid (风格分类ID)<brname (风格名称)<brtemplets (默认模板目录)

系统配置与辅助表

表名 中文名称 核心作用 关键字段解析
dede_homepageset 首页设置表 存储首页的一些配置,如首页标题、关键字、Logo等。 item (配置项名称)<brvalue (配置项值)
dede_config 系统配置表 存储DedeCMS的全局配置项。 aid (主键)<brvarname (变量名)<brinfo (变量值)
dede_enews 邮件订阅表 存储订阅了网站更新的用户邮箱。 id (主键)<bremail (邮箱地址)<bruserid (用户ID)<brtime (订阅时间)
dede_friendlink 友情链接表 存储网站的友情链接信息。 id (主键)<brurl (链接地址)<brwebname (网站名称)<brlogo (Logo图片)
dede_admintype (见上文) 管理员权限组
dede_admintype_purview 管理员权限明细表 详细定义每个管理员组对每个具体功能模块的权限。 typeid (管理员组ID)<brmid (功能模块ID)<brpurview (权限值)

数据流与工作原理简述

    • 管理员或会员在前台/后台提交内容。
    • 系统首先将标题、作者、栏目等通用信息写入 dede_archives 表,生成一个 id (我们称之为 aid)。
    • 系统根据内容的模型ID,找到对应的附加表(如 dede_addonarticle),将正文等自定义字段与这个 aid 一起写入附加表。
    • 如果开启了审核,dede_archives.arcrank 字段会先被设置为非0值,直到审核通过才变为0。
  1. 内容展示

    • 用户访问一个栏目或文章页面。
    • DedeCMS 的 PHP 脚本根据 URL 参数(如 aid=123typeid=5)查询数据库。
    • 查询流程
      • 如果是文章页:先从 dede_archives 表中根据 aid 查出基本信息,再根据 typeiddede_arctype 表中查出栏目信息,最后根据模型ID找到对应的附加表,查出正文等自定义字段。
      • 如果是列表页:先从 dede_arctype 表中根据 typeid 找到栏目,再从 dede_archives 表中根据 typeidarcrank=0 (已审核) 等条件查询出该栏目下的所有文章列表。
    • PHP 将查询出的数据赋值给模板引擎。
    • 模板引擎加载对应的 .htm 模板文件,将数据填充进去,最终生成 HTML 页面输出给用户。

常见应用场景与SQL示例

场景1:查找某个栏目下所有“已审核”且“为头条”的文章

SELECT
    a.id, a.title, a.pubdate, t.typename
FROM
    dede_archives AS a
JOIN
    dede_arctype AS t ON a.typeid = t.id
WHERE
    a.typeid = 10 -- 假设栏目ID为10
    AND a.arcrank = 0 -- 已审核
    AND a.flag LIKE '%h%' -- 包含h属性(头条)
ORDER BY
    a.pubdate DESC;

场景2:查找某个会员发布的所有文章及其所属栏目

SELECT
    m.uname, a.title, t.typename, a.pubdate
FROM
    dede_member AS m
JOIN
    dede_arcmember AS am ON m.mid = am.mid
JOIN
    dede_archives AS a ON am.aid = a.id
JOIN
    dede_arctype AS t ON a.typeid = t.id
WHERE
    m.uname = '张三';

场景3:批量修改某个自定义字段的值(将所有文章的“来源”改为“本站原创”)

UPDATE dede_archives SET source = '本站原创' WHERE source = '';

总结与建议

  • 理解 archivesaddonXX 的关系:这是理解 DedeCMS 数据结构的关键,几乎所有内容查询都需要关联这两个表。
  • 善用 arcrank 字段arcrank=0 代表内容已发布(可见),非0值代表处于待审核、草稿等状态,在开发查询逻辑时,务必加上这个条件。
  • 备份!备份!备份!:在进行任何直接操作数据库的操作(如 DELETE, UPDATE)之前,务必备份数据库,一个错误的 SQL 语句可能导致灾难性后果。
  • 性能优化:对于大型网站,dede_archives 表可能会变得非常庞大,可以考虑对 typeid, pubdate, flag 等常用查询字段建立索引,以显著提升查询速度。

通过以上分析,你应该对 DedeCMS 的数据库表结构有了清晰的认识,这不仅能帮助你更好地管理网站,也为后续的二次开发打下了坚实的基础。

dede数据库表分析
(图片来源网络,侵删)
-- 展开阅读全文 --
头像
dede下一页链接怎么设置?
« 上一篇 今天
debian运行c语言
下一篇 » 今天

相关文章

取消
微信二维码
支付宝二维码

目录[+]