数据库如何高效管理?

99ANYc3cd6
预计阅读时长 16 分钟
位置: 首页 织梦建站 正文

理解数据库结构对于进行二次开发、数据迁移、性能优化或排查问题至关重要,织梦的文章内容主要存储在几个核心表中,它们之间通过关联字段(如 id)紧密联系。

织梦 文章内容数据库
(图片来源网络,侵删)

核心数据表概览

系统主要由以下几个表构成:

  1. dede_archives文章主表,存储文章的基本信息,如标题、作者、发布时间、所属栏目等。
  2. dede_addonarticle文章附加表,存储文章的具体内容(正文)。
  3. dede_arctype栏目表,定义网站的栏目结构。
  4. dede_arctiny微表,用于高性能调用文章列表,只包含最核心的几个字段。
  5. dede_taglist / dede_tagindex标签表,用于实现文章标签功能。

下面我们逐一详解每个表的结构和作用。


dede_archives (文章主表)

这是文章系统的核心,每篇文章都会在这里有一条记录。

字段名 类型 说明
id int(11) 文章ID,主键,自增,唯一标识一篇文章。
typeid int(11) 栏目ID,关联 dede_arctype 表的 id 字段,表示文章所属的栏目。
typeid2 int(11) 副栏目ID,可选,用于文章属于多个栏目。
sortrank int(11) 排序权重,数字越大,排序越靠前,常用于首页、栏目页的排序。
flag char(30) 属性/标识,用逗号分隔的字符,如 c,h,p(推荐、头条、图片),用于在模板中判断文章类型。
ismake smallint(6) 是否生成静态页1 表示已生成,0 表示未生成。
channel int(11) 模型ID,指定文章所使用的模型(普通文章、图集、软件等)。
arcrank smallint(6) 审核状态0 为已审核,-1 为待审核,-2 为禁用。
click int(11) 点击量,记录文章的浏览次数。
money decimal(10,2) 售价,用于付费阅读。
shorttitle varchar(255) ,可用于列表页显示。
color varchar(10) 标题颜色,用于设置标题的显示颜色。
writer varchar(30) 作者
source varchar(50) 来源
litpic varchar(100) 文章缩略图,即文章的封面图。
pubdate int(11) 发布时间,Unix时间戳格式。
senddate int(11) 录入时间,Unix时间戳格式。
mid int(11) 录入员ID,关联后台管理员ID。
keywords varchar(255) ,用于SEO和搜索。
lastpost int(11) 最后评论时间,Unix时间戳。
scores decimal(10,2) 积分
goodpost mediumint(8) 好评数
badpost mediumint(8) 差评数
voteid int(11) 投票ID
notpost smallint(6) 是否允许评论0 允许,1 不允许。
description varchar(500) 文章摘要
filename varchar(255) 自定义文件名,用于生成静态页时的文件名。

dede_addonarticle (文章附加表)

这个表专门用来存储文章的正文内容,它的设计遵循了织梦的“模型分离”思想,主表存元数据,附加表存具体内容。

织梦 文章内容数据库
(图片来源网络,侵删)
字段名 类型 说明
aid int(11) 文章ID外键,关联 dede_archives 表的 id 字段,通过这个字段,可以将附加表的内容与主表的信息对应起来。
body mediumtext 文章正文,存储文章的全部HTML内容,这是文章内容的核心。
templet varchar(30) 自定义模板,可以为单篇文章指定特殊的显示模板。

为什么需要附加表?body)通常很长,而文章主表(archives)需要频繁用于列表查询(如获取标题、时间、点击量等),如果将长正文也放在主表中,会严重拖慢列表查询的速度,分离后,查询列表时只需要操作轻量级的 archives 表,需要显示正文时再通过 aid 关联查询 addonarticle 表,这是一种典型的数据库优化策略。


dede_arctype (栏目表)

存储网站所有栏目的信息。

字段名 类型 说明
id int(11) 栏目ID,主键,自增。
reid int(11) 父栏目ID0 表示顶级栏目,用于构建栏目树状结构。
topid int(11) 顶级栏目ID
sortrank int(11) 栏目排序
typename varchar(50) 栏目名称
typedir varchar(100) 栏目目录,用于生成URL路径。
isdefault smallint(6) 是否为默认栏目
defaultname varchar(20) 默认页名称
issend smallint(6) 是否允许发布文章
channeltype int(11) 栏目类型/模型ID
maxpage int(11) 列表分页最大页数
ispart smallint(6) 是否为外部链接1 是,0 否,如果是,corank 字段存放链接地址。
corank varchar(100) 链接地址,当 ispart=1 时生效。
description varchar(500) 栏目描述
keywords varchar(255) 栏目关键词
moresite smallint(6) 是否开启多站点
siteurl varchar(255) 站点根网址
sitepath varchar(255) 站点根目录
modname varchar(50) 模型

dede_arctiny (微表)

这是一个为了极致性能而设计的表,只包含文章最核心、最常用的几个字段。

字段名 类型 说明
id int(11) 文章ID,主键。
typeid int(11) 栏目ID
arcrank smallint(6) 审核状态
click int(11) 点击量
senddate int(11) 发布时间
mid int(11) 录入员ID

用途: 在首页、频道页等需要调用大量文章标题列表的地方,织梦会优先查询这个轻量级的 arctiny 表,速度极快,如果需要获取摘要、缩略图等信息,再通过 id 去查询 archives 表。

织梦 文章内容数据库
(图片来源网络,侵删)

标签相关表 (dede_taglist, dede_tagindex)

  • dede_tagindex (标签索引表): 存储所有标签的基本信息。

    • id: 标签ID (主键)
    • tagname: 标签名称
    • count: 使用该标签的文章数量
  • dede_taglist (标签列表表): 存储文章与标签的对应关系(多对多)。

    • aid: 文章ID (外键, 关联 archives.id)
    • tagid: 标签ID (外键, 关联 tagindex.id)
    • typeid: 标签所属栏目ID

这个设计允许一篇文章有多个标签,一个标签也可以属于多篇文章。

数据关联流程示例

假设要显示一篇“文章详情页”:

  1. URL解析:用户访问 https://www.example.com/a/123.html123 是文章ID。
  2. 查询主表:系统首先查询 dede_archives 表,WHERE id = 123,获取文章的标题、作者、发布时间、缩略图、所属栏目ID (typeid) 等所有元数据。
  3. 查询附加表:根据上一步获取的 id (123),再查询 dede_addonarticle 表,WHERE aid = 123,获取文章的正文 (body) 内容。
  4. 查询栏目信息:根据 typeid,查询 dede_arctype 表,获取当前文章所在栏目的名称、目录等信息,用于面包屑导航等。
  5. 组合输出:将获取到的所有数据(标题、正文、作者、栏目信息等)填充到详情页模板(article_article.htm)中,最终生成HTML页面返回给用户。

重要提示

  • 表前缀:默认表前缀是 dede_,但在安装时可以自定义,如果你的表前缀不是 dede_,请将上述所有表名替换为你自己的前缀。
  • 模型扩展dede_addonarticle 是“文章模型”的附加表,如果你安装了其他模型,如图集模型、软件模型等,它们会有自己对应的附加表,如 dede_addonimagesdede_addonsoft 等,结构类似,但 body 字段会替换为该模型特有的字段(如 imgurls)。
  • 数据安全:直接操作数据库有风险,建议在操作前进行完整备份。

希望这份详细的解析能帮助你彻底理解织梦CMS的文章内容数据库结构!

-- 展开阅读全文 --
头像
织梦上传新文件入口在哪?
« 上一篇 今天
织梦百度分享插件下载
下一篇 » 今天

相关文章

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

目录[+]