drupal的数据模型之一——版本维护与多语种

  在实施完一个网站的内容管理之后,抽空看了drupal,我的关注点在数据库表设计。遗憾的是没有找到其数据模型的文档。所以不得不一边按教程做实例,一边观察后台数据的变化,以此试图理解其数据模型。
  相关工具及用途如下:

  • drupal-6.16:研究对象
  • phpmyadmin:观察后台数据
  • AmaterasUML:描述数据模型


  drupal非常简洁地用两个表,就解决了内容的版本维护和多语种的问题。这两个表是node(内容节点)表和node_revisions(节点修订版本)表。

  前者描述节点的基本属性,与一条确定的内容对应,字段含义如下:

No. Logical Name Physical Name Type Null Default Value Description
1 nid nid MEDIUMINT(10) N AUTO INCREMENT
节点id
2 vid vid MEDIUMINT(10) N 当前版本id
3 type type VARCHAR(32) N 节点类型
4 language language VARCHAR(12) N 语种
5 title title VARCHAR(255) N 题名
6 uid uid INT(10) N 节点编辑用户id
7 status status INT(10) N 状态
8 created created INT(10) N 建立时间
9 changed changed INT(10) N 修改时间
10 comment comment INT(10) N 评论设置
0:禁止新的评论,并隐藏已有评论
1:禁止新的评论,但显示已有的评论
2:允许评 论,并显示已有评论
11 promote promote INT(10) N 推荐首页
12 moderate moderate INT(10) N 评论设置
13 sticky sticky INT(10) N ??
14 tnid tnid MEDIUMINT(10) N 翻译的源节点
15 translate translate INT(10) N 已翻译

  后者记录节点的各个修改版本。字段含义如下:

No. Logical Name Physical Name Type Null Default Value Description
1 nid nid MEDIUMINT(10) N 节点id
2 vid vid MEDIUMINT(10) N AUTO INCREMENT
节点版本
3 uid uid INT(10) N 编辑节点的用户id
4 title title VARCHAR(255) N 题名
5 body body LONGTEXT N 正文
6 teaser teaser LONGTEXT N 正文摘要
7 log log LONGTEXT N 日志备注
8 timestamp timestamp INT(10) N 创建时间
9 format format INT(10) N 格式

node_revisions通过表中的nid指向node中的多版本对应的同一个内容节点。

node则通过tnid指向多语种翻译对应的源节点,可以图示如下:

node与node_revisions关系图

附件是AmaterasUML生成的html格式的数据库表说明。

猜你喜欢

转载自chen4w.iteye.com/blog/693167