dede文档数据库结构怎么设计?

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

DedeCMS 的核心数据都存储在 dede_archives 这张主表中,其他相关表则围绕它展开,共同构成了一个完整的文档内容管理系统。

dede 文档 数据库
(图片来源网络,侵删)

核心表:dede_archives (文档主表)

这是 DedeCMS 中最重要的一张表,存储了所有文档(文章、图集、软件等)的核心信息,无论是哪种内容模型,其基本数据都会在这里。

字段名 数据类型 说明
id mediumint(8) unsigned 文档主键ID,唯一标识一篇文章,自增主键。
typeid smallint(5) unsigned 栏目ID,指向 dede_arctype 表,表示文章所属的栏目。
typeid2 smallint(5) unsigned 副栏目ID,用于文章同时属于多个栏目。
sortrank int(10) unsigned 文档排序,数字越小,排序越靠前,常用于首页、列表页的排序。
flag char(30) 文档属性/标识,这是一个非常关键的字段,用逗号分隔的字符串来标识文章的特殊状态,
c: 推荐/头条
h: 幻灯片/首页焦点图
p: 图片频道
s: 跳转页面
a: 待审核
ismake smallint(6) 是否生成静态文件1 为已生成,-1 为仅动态。
channel smallint(6) 内容模型ID,指向 dede_channeltype 表,用于区分文章、图集、软件等不同类型的内容。
arcrank smallint(6) 审核状态0 为已审核,-1 为待审核,-2 为禁用。
click int(10) unsigned 点击量,记录文章被点击的次数。
money smallint(5) unsigned 售价,用于付费文档。
shorttitle varchar(255) /副标题,可用于列表页显示。
color varchar(10) 标题颜色,存储CSS颜色值,如 #FF0000
writer varchar(30) 作者
source varchar(50) 来源
litpic varchar(100) 缩略图,存储缩略图的相对路径。
pubdate int(10) unsigned 发布时间,Unix时间戳格式。
senddate int(10) unsigned 录入时间,Unix时间戳格式。
mid smallint(6) 录入者ID,指向 dede_memberdede_admin 表。
keywords varchar(255) ,多个关键词用英文逗号 分隔。
description varchar(255) 描述,用于列表页摘要和SEO描述。
filename varchar(255) 自定义文件名,用于静态化时生成自定义的HTML文件名。

重要关联表

除了主表,还有一些表与文档紧密相关,共同构成了完整的内容。

dede_addonarticle (文章附加表)

  • 作用模型为“文章”时,文章的具体正文内容存储在这里,而不是 dede_archives,这是一种将主数据和内容分离的设计,可以有效提高主表的查询效率。
  • 关联:通过 aid 字段与 dede_archives 表的 id 字段关联。
  • 核心字段
    • aid: 文档ID,对应 dede_archives.id
    • body: 文章正文,这里存储的是经过 DedeCMS 特殊标签处理过的 HTML 内容。

dede_arctype (栏目表)

  • 作用:存储网站所有栏目的信息。
  • 关联dede_archives.typeid 指向此表的 id 字段。
  • 核心字段
    • id: 栏目ID。
    • reid: 父栏目ID,用于构建栏目树。
    • typename: 栏目名称。
    • typedir: 栏目目录,用于静态化路径。
    • isdefault: 是否为默认栏目。

dede_arctiny (简略文档表)

  • 作用:一个精简版的 dede_archives 表,它只包含文档最核心的信息(如 ID, 栏目 ID, 标题, 缩略图, 发布时间),这个表主要用于首页、列表页等需要快速调取大量文档列表的场景,可以极大减少数据库查询开销。
  • 关联:与 dede_archives 表结构基本一致,但字段更少,通过 id 关联。

dede_taglist (TAG标签关联表)

  • 作用:记录文档与标签之间的多对多关系。
  • 关联
    • aid: 文档ID,对应 dede_archives.id
    • tagid: 标签ID,对应 dede_tag.id
  • 核心字段
    • aid: 文档ID。
    • tagid: 标签ID。
    • typeid: 栏目ID。

dede_tagindex (TAG标签索引表)

  • 作用:存储所有标签的名称和基本信息。
  • 关联dede_taglist.tagid 指向此表的 id 字段。
  • 核心字段
    • id: 标签ID。
    • tagname: 标签名称。

dede_feedback (评论表)

  • 作用:存储用户对文档的评论。
  • 关联aid 字段指向被评论的文档ID (dede_archives.id)。
  • 核心字段
    • aid: 被评论的文档ID。
    • username: 评论者用户名。
    • arctitle: 评论的文章标题(冗余存储,方便显示)。
    • dtime: 评论时间。
    • msg: 评论内容。

模型的存储方式

DedeCMS 的强大之处在于其多模型支持,除了默认的“文章”模型,还有图集、软件、商品等。

  • 文章:正文存储在 dede_addonarticle 表。
  • 图集:正文存储在 dede_addonimages 表,图片信息(如路径、说明)通常以序列化或特定格式存在 body 字段中。
  • 软件:正文存储在 dede_addonsoft 表,软件相关信息(如版本、大小、下载地址)存储在此表的相应字段中。
  • 商品:正文存储在 dede_addonproduct 表,商品属性(如价格、型号、库存)存储在此表中。

核心规律

  1. 所有模型的基本信息(标题、栏目、时间等)都统一存放在 dede_archives 表。
  2. dede_archives.channel 字段决定了该文档属于哪个内容模型。
  3. 根据不同的 channel 值,系统会去对应的 dede_addonxxx 附加表中读取具体的正文内容。

常用 SQL 查询示例

查询某个栏目下的所有文章(带分页)

SELECT a.id, a.title, a.litpic, a.pubdate, t.typename
FROM dede_archives AS a
LEFT JOIN dede_arctype AS t ON a.typeid = t.id
WHERE a.typeid = 5 AND a.arcrank = 0
ORDER BY a.sortrank ASC
LIMIT 0, 10; -- 假设每页10条,这是第一页

查询带特定标签(如“织梦”)的所有文章

SELECT a.id, a.title
FROM dede_archives AS a
JOIN dede_taglist AS tl ON a.id = tl.aid
JOIN dede_tagindex AS ti ON tl.tagid = ti.id
WHERE ti.tagname = '织梦' AND a.arcrank = 0;

查询点击量最高的10篇文章

SELECT id, title, click
FROM dede_archives
WHERE arcrank = 0
ORDER BY click DESC
LIMIT 0, 10;

查询推荐(头条)文章

SELECT id, title
FROM dede_archives
WHERE flag LIKE '%c%' AND arcrank = 0;
表名 主要作用 关键字段
dede_archives 文档主表,存储所有内容的核心信息 id, typeid, title, flag, channel, pubdate
dede_addonarticle 文章模型的 aid, body
dede_arctype 栏目信息表 id, typename, typedir
dede_arctiny 文档列表精简表,用于提升性能 id, typeid, title, litpic
dede_taglist 文档-TAG关联表(多对多) aid, tagid
dede_tagindex TAG标签信息表 id, tagname
dede_feedback 评论表 aid, username, msg

掌握这些核心表的结构和关系,你就能对 DedeCMS 的数据了如指掌,无论是进行简单的数据查询还是复杂的二次开发,都会变得游刃有余。

-- 展开阅读全文 --
头像
织梦如何获取当前栏目链接?
« 上一篇 03-18
织梦金融模板免费下载,安全靠谱吗?
下一篇 » 03-18

相关文章

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

目录[+]