在安装MediaWiki时,安装脚本会执行包中的tables.sql来创建数据表。根据安装时选择的数据库类型,程序会选择对应路径下的文件:
如果使用Maria/MySQL,选择的文件路径为maintenance/tables.sql;
如果使用Postgres,选择的文件路径为maintenance/postgres/tables.sql;
如果使用Microsoft SQL Server,选择的文件路径为maintenance/mssql/tables.sql;
如果使用Oracle,选择的文件路径为maintenance/oracle/tables.sql。
MediaWiki发展至今,版本几经变迁,新版本中可能会引入新表,而老版本中的某些表也可能被废弃。表的变动情况可参阅:
http://www.mediawiki.org/wiki/Manual:Database_layout#Version_history
1 . 数据库表清单
MediaWiki1.23中,如使用MySQL数据库,则一共会创建50张表,如下是所有表及其简要说明:
user – 保存用户信息
user_groups – 保存用户所在的用户组
user_former_groups – 保存用户曾经所在的用户组
user_newtalk – 用于通知用户讨论页的更新
user_properties – 保存用户的设置信息(当设置为非默认值时才保存)
page – 保存页面的相关信息(此表是wiki系统的核心表)
revision – 保存页面的版本信息,一次编辑生成一个版本
text – 保存页面版本的内容
archive –保存被删除页面的相关信息
pagelinks – 保存页到页之间的链接信息
templatelinks – 保存模板页到页之间的链接信息?
imagelinks – 保存页面中的图片链接
categorylinks - 保存页面中的分类链接
category – 保存已存在的分类
externallinks – 保存外部链接
langlinks – 保存多语言版本间的链接
iwlinks – 保存跨wiki系统的链接
site_stats – 保存wiki站点的统计信息(表中只有一行记录)
hitcounter – 缓存被访问页面的id(与$wgHitcounterUpdateFreq参数的设置有关)
ipblocks – 保存被封禁用户/IP的相关信息
image – 保存上传的图片和其他文件的信息
oldimage – 保存上传文件的历史版本
filearchive – 保存被删除文件的信息
uploadstash – 保存文件上传时(上传完成前)的信息
recentchanges – “特殊:最近更改”页面的摘要表
watchlist – 保存监视列表信息(即用户访问页面的记录)
searchindex – 保存页面的搜索索引信息(必须使用MyISAM引擎以支持全文检索)
interwiki – 保存可识别的跨wiki链接前缀(跨wiki数据)?
querycache – 缓存代价较高的分组查询?
objectcache – 对象缓存(用于未使用Memcached时的一般缓存操作)
transcache –跨wiki的嵌入缓存(与$wgEnableScaryTranscluding参数及interwiki表有关)?
logging – 操作日志
log_search – 日志查找(文档中无详细描述)?
job – 作业(由并行的Apache进程或后台命令行执行的作业)?
querycache_info – 特殊页面缓存的更新细节
redirect – 保存页面中的重定向信息
querycachetwo – 缓存代价较高的需要两个链接的分组查询
page_restrictions – 保存受保护页面信息
protected_titles – 保存受保护标题信息
page_props – 保存页面的属性信息
updatelog – 保存升级记录
change_tag – 保存revision/logging/recentchanges表中的标签信息?
tag_ summary – 保存revision/logging/recentchanges表中的标签清单
valid_tag – 有效的更改标签
l10n_cache – 保存本地化数据(一组语言选项下的键-值对)
msg_resource – 缓存资源加载器使用的信息块(JSON格式)
msg_resource_links – 保存resource与message的对应关系
module_deps – 保存模块依赖的本地文件
sites – 保存wiki识别的站点信息
site_identifiers– 保存站点的本地标识符
2. 核心表
页面是MediaWiki系统的核心,与页面相关的主要表为page, revision, text,下文以1.23版MySQL数据库为例来说明这几张表:
(1)page
序号 | 表名 | page | ||
| 字段名 | 属性 | 非空 | 说明 |
1 | page_id | int unsigned | √ | 页面ID(主键) |
2 | page_namespace | int | √ | 页面命名空间,页面是普通页时该值为0;是图片页时该值为6;是分类页时该值为14... |
3 | page_title | varchar(255) | √ | 页面标题 页面命名空间和页面标题唯一标识一个页面 |
4 | page_restrictions | tinyblob | √ | 一组逗号分隔的permission key,指明谁可以移动或编辑此页面 |
5 | page_counter | bigint unsigned | √ | 页面被浏览的次数 |
6 | page_is_redirect | tinyint unsigned | √ | 是否为重定向页面 |
7 | page_is_new | tinyint unsigned | √ | 是否为新页面 |
8 | page_random | real unsigned | √ | 介于0到1之间的随机值,供“特殊:随机页面”使用 |
9 | page_touched | binary(14) | √ | 页面被“touch”的时间(重新渲染,缓存失效) |
10 | page_links_updated | varbinary(14) | 页面被重新解析的时间(此时链接表中的记录执行更新操作) | |
11 | page_latest | int unsigned | √ | 页面的最新版本,指向revision表的rev_id |
12 | page_len | int unsigned | √ | 页面当前内容的长度(以字节为单位) |
13 | page_content_model | varbinary(32) | 内容模型(如wikitext) | |
| 索引 | 主键:page_id 外键:page_latest -> revision.rev_id | ||
| 其它说明 |
|
(2)revision
序号 | 表名 | revision | ||
| 字段名 | 属性 | 非空 | 说明 |
1 | rev_id | int unsigned | √ | 版本ID(主键) |
2 | rev_page | Int unsigned | √ | 指向页面ID |
3 | rev_text_id | int unsigned | 指向text表的old_id,text表保存revision的内容 | |
4 | rev_comment | tinyblob | 有关更改的注释信息 | |
5 | rev_user | int unsigned | 更改者的id,指向user表的user_id | |
6 | rev_user_text | varchar(255) | √ | 更改者的用户名或IP |
7 | rev_timestamp | binary(14) | 版本的创建时间 | |
8 | rev_minor_edit | tinyint unsigned | √ | 是否勾选了“标记为小编辑”编辑框 |
9 | rev_deleted | tinyint unsigned | 该版本是否已删除 | |
10 | rev_len | int unsigned | 该版本的长度(以字节为单位) | |
11 | rev_parent_id | int unsigned | 父ID,指向revision表的rev_id | |
12 | rev_sha1 | varbinary(32) | √ | base-36编码的文本内容哈希值(SHA-1算法) |
13 | rev_content_model | varbinary(32) | 内容模型 | |
14 | rev_content_format | varbinary(64) | 内容格式 | |
| 索引 | 主键:rev_id 外键:rev_page -> page. page_id rev_text_id -> text.old_id rev_user -> user.user_id rev_parent_id -> revision.rev_id | ||
| 其它说明 |
|
(3)text
序号 | 表名 | text | ||
| 字段名 | 属性 | 非空 | 说明 |
1 | int unsigned | √ | text ID(主键) | |
2 | old_text | mediumblob | √ | 文本内容 |
3 | old_flags | tinyblob | √ | 文本格式(如gzip, utf8, object) |
| 索引 | 主键:old_id 外键: | ||
| 其它说明 |
|
参考资料: