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指向多语种翻译对应的源节点,可以图示如下:
附件是AmaterasUML生成的html格式的数据库表说明。