数据表如何高效管理?

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

织梦CMS的数据库设计采用了分离的模型,这是其灵活性的关键,理解这个模型对于进行二次开发、数据迁移或排查问题至关重要。

织梦栏目内容数据表
(图片来源网络,侵删)

核心思想是:

  • 栏目(分类):像一个文件夹,用于组织内容,它有自己独立的表。
  • 内容(文章):具体的文章、图片等信息,存储在另一个表中。
  • 关联:通过一个中间表,将内容和它所属的栏目关联起来。

下面是核心的几个数据表及其字段详解。


核心栏目表:dede_arctype

这个表存储了网站所有的栏目(分类)信息,首页”、“公司简介”、“产品中心”、“新闻动态”等。

表结构(关键字段说明):

织梦栏目内容数据表
(图片来源网络,侵删)
字段名 数据类型 说明
id mediumint(8) unsigned 主键,自增ID,每个栏目的唯一标识。
topid smallint(6) unsigned 父栏目ID,用于实现栏目的多级(无限级)分类,如果为0,则为顶级栏目。
sortrank smallint(6) unsigned 排序权重,数字越小,排序越靠前。
typename varchar(50) 栏目名称,如“产品中心”。
typedir varchar(100) 栏目目录,栏目的URL路径,如 {cmspath}/product/
isdefault smallint(6) 是否为默认栏目,通常为0。
defaultname varchar(50) 默认文档名称,当栏目为空时,显示的默认页面文件名。
issystem smallint(6) 是否为系统栏目,1表示系统自带栏目(如“首页”),0为用户创建栏目。
channeltype smallint(6) 内容模型ID,指定该栏目下存放的内容类型(文章、软件、商品等),对应dede_channeltype表。
corank smallint(6) 栏目权限等级
description varchar(255) 栏目描述,用于SEO。
keywords varchar(255) 栏目关键词,用于SEO。
seotitle varchar(80)
moresite smallint(6) 是否启用多站点
siteurl varchar(255) 站点URL
sitepath varchar(100) 站点目录
modname varchar(50) 栏目模板
templet varchar(50) 封面模板
contenttemplet` varchar(50) 列表模板
addtable` varchar(50) 附加表,如果使用了自定义模型,内容会存放在这个指定的附加表中。
useradminstyle smallint(6) 后台管理样式

小结: dede_arctype是栏目的“户口本”,定义了栏目的名称、结构、路径和模板。


表:dede_archives

这个表存储了所有内容(文章、软件等)的公共信息属于哪个栏目,使用什么模型,其最核心、共通的字段都存在这里。

表结构(关键字段说明):

字段名 数据类型 说明
id mediumint(8) unsigned 主键,自增ID的唯一标识。
typeid smallint(6) unsigned 栏目ID这是连接栏目和内容的关键字段!指向dede_arctype表的id
typeid2 smallint(6) unsigned 副栏目ID可以同时属于主栏目和副栏目。
sortrank smallint(6) unsigned 排序权重,后台的排序依据。
flag varchar(30) 属性标识,如c(推荐), h(头条), p(图片)等,用逗号分隔。
ismake smallint(6) 是否直接生成HTML,1为是,0为否(动态浏览)。
channel smallint(6) 内容所属模型ID,与dede_arctype表的channeltype对应。
arcrank smallint(6) 阅读权限,0为开放,>0为需要指定权限。
click int(10) unsigned 点击量
money` smallint(6) 付费金额
shorttitle varchar(50) ,用于列表页显示。
color` varchar(10) 标题颜色
writer` varchar(30) 作者
source` varchar(50) 来源
litpic` varchar(100) 缩略图/封面图
pubdate` int(10) unsigned 发布时间,Unix时间戳。
senddate` int(10) unsigned 提交时间,Unix时间戳。
mid` int(10) unsigned 发布会员ID
keywords` varchar(255) 内容关键词
description` varchar(255) 内容摘要
text` mediumtext 文章正文重要:早期版本可能用此字段存储内容,但新版更推荐使用附加表。
ishtml` smallint(6) 是否生成静态页
filename` varchar(100) 自定义文件名
dutyadmin` varchar(30) 责任编辑

小结: dede_archives的“身份证”,存储了标题、时间、作者、所属栏目等公共信息。typeid字段是理解内容与栏目关系的关键

织梦栏目内容数据表
(图片来源网络,侵删)

内容模型附加表(非常重要)

织梦CMS的一大特色是支持模型,你可以创建一个“产品”模型,它除了有文章的标题、正文外,还需要“价格”、“规格”、“型号”等字段。

这些自定义字段不会存储在dede_archives表中,而是会存放在一个或多个附加表中。

  • 附加表由谁定义? 在后台的“内容模型管理”中,每创建一个新模型,系统都会自动为其创建一个对应的附加表,表名通常为 dede_addonXX (XX为模型ID)。

  • 附加表如何与主内容关联?

    1. dede_archives 表中的 addtable 字段,会记录内容所使用的附加表名(如 dede_addonarticle)。
    2. 附加表中,必须有一个与 dede_archives 表关联的字段,通常是 aid,它与 dede_archivesid 对应。

举例说明:

假设我们有一个默认的“文章”模型,它的附加表是 dede_addonarticle

dede_addonarticle 表结构(部分关键字段):

字段名 数据类型 说明
aid mediumint(8) unsigned 关联IDdede_archives表的id字段一一对应,这是连接两个表的桥梁。
body mediumtext 文章正文内容,这是存储文章主体内容的地方,而不是在dede_archivestext字段。
templet` varchar(50) 页模板,可以为单篇文章指定模板。

数据流程: 当你查看一篇文章时,织梦CMS会这样做:

  1. 从URL获取文章ID(假设为 123)。
  2. dede_archives 表中查询 id = 123 的记录,得到 typeid(栏目ID)、title)、litpic(缩略图)等信息,以及 addtable 字段的值(假设为 dede_addonarticle)。
  3. 根据 addtable 的值,再到 dede_addonarticle 表中查询 aid = 123 的记录,得到 body(文章正文)。
  4. 将所有信息整合,通过模板生成最终显示的页面。

总结与关系图

核心关系:

  1. 栏目与栏目:通过 dede_arctypetopid 字段实现多级分类。
  2. 内容与栏目:通过 dede_archivestypeid 字段与 dede_arctypeid 字段关联。
  3. 内容与附加字段:通过 dede_archivesaddtable 字段找到附加表,再通过附加表的 aid 字段与 dede_archivesid 关联。

ER图(简化版):

+---------------+      +-----------------+
|  dede_arctype |      |  dede_archives  |
+---------------+      +-----------------+
| id (PK)       |<----+| typeid (FK)     |
| topid         |      | id (PK)         |
| typename      |      | title           |
| ...           |      | typeid2 (FK)    |
+---------------+      | ...             |
                       | addtable        |
                       +--------+--------+
                                |
                                | (通过 addtable 指向)
                                v
                       +-----------------+
                       |  dede_addonXX   |  (XX为模型ID)
                       +-----------------+
                       | aid (FK)        |<----+
                       | body            |     |
                       | ...             |     |
                       +-----------------+     |
                                                 |
                                                 + (aid 与 id 对应)

理解这三个核心表及其关系,就掌握了织梦CMS数据存储的精髓,无论是手动修改数据、编写插件还是进行数据迁移,都会变得非常清晰。

-- 展开阅读全文 --
头像
织梦视频提取缩略图
« 上一篇 04-25
C语言如何统计文本文件中的单词数?
下一篇 » 04-25

相关文章

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

目录[+]