数据库表结构及字段作用分析

数据库表结构及字段作用分析

wordpress的表结构设计堪称精妙,通过寥寥几个表就能把全站的数据实现互通,因此无论是学习数据库的表架构还是为二次开发服务,都值得详细研究一下表及各字段的作用。

数据库表结构介绍

在WordPress的数据库结构中,存储系统选项和插件配置的wp_options表是比较独立的结构,在后文中会提到,它采用了key-value模式存储,这样做的好处是易于拓展,各个插件都可以轻松地在这里存储自己的配置。

post,comment,user 则是三个基本表加上拓展表的组合。以wp_users为例,wp_users已经存储了每个用户会用到的基本信息,比如 login_name、display_name、 password、email等常用信息,但如果我们还要存储一些不常用的数据,最好的做法不是去在表后加上一列,去破坏默认的表结构,而是将数据存在wp_usermeta中。wp_usermeta这个拓展表和wp_options表有类似的结构,我们可以在这里存储每个用户的QQ号码、手机号码、登录WordPress后台的主题选项等等。

比较难以理解的是term,即wp_terms、wp_term_relationships、wp_term_taxonomy。在WordPress的系统里,我们常见的分类有文章的分类、链接的分类,实际上还有TAG,它也是一种特殊的分类方式,我们甚至还可以创建自己的分类方法。WordPress将所有的分类及分类方法、对应结构都记录在这三个表中。wp_terms记录了每个分类的名字以及基本信息,如本站分为“WordPress开发”、“WPCEO插件”等,这里的分类指广义上的分类,所以每个TAG也是一个“分类”。wp_term_taxonomy记录了每个分类所归属的分类方法,如“WordPress开发”、“WPCEO插件”是文章分类(category),放置友情链接的“我的朋友”、“我的同事”分类属于友情链接分类(link_category)。wp_term_relationships记录了每个文章(或链接)所对应的分类方法。

庆幸的是,关于term的使用,WordPress中相关函数的使用方法还是比较清晰明了,我们就没必要纠结于它的构造了。

WordPress默认情况下一共有以下12个表,这里加上了默认的表前缀 wp_:

  • wp_commentmeta:存储 Akismet 或手工审核的评论是否为垃圾评论的判断结果;
  • wp_comments:存储评论信息,如评论内容、评论所属文章、评论人昵称、邮箱、URL 等;
  • wp_links:存储友情链接信息,如友链名称、URL、打开方式、描述、是否可见等;
  • wp_options:存储 WordPress 系统默认及后台系统选项、插件及主题配置信息,包括网站标题、副标题、当前主题等等;
  • wp_postmeta:存储文章的一些相关信息,如文章附件图片的 alt 信息、文章所在分类的 URL 以及文章自定义的自定义字段,其中可能就有文章访问次数等;
  • wp_posts:存储文章信息,包括文章标题、正文、摘要、作者、发布时间、访问密码、评论数、修改时间、文章地址等;
  • wp_termeta:存储对菜单分类的更多设置,属于开发性功能居多,例如分类目录的缩略图、颜色标识等;
  • wp_terms:存储菜单分类、标签分类名称及 URL 信息;
  • wp_term_relationships:存储文章和分类、标签的相互对应关系;
  • wp_term_taxonomy:存储分类和标签的描述信息、父子关系、所属包含的文章数等;
  • wp_usermeta:存储用户的姓名、昵称、权限等信息;
  • wp_users:存储用户名、密码、昵称、邮箱、注册时间等信息;

各表字段介绍

wp_commentmeta

meta_id:自增唯一 ID
comment_id:评论 ID
meta_key:键名
meta_value:键值

wp_comments

comment_ID:自增唯一 ID
comment_post_ID:对应文章 ID
comment_author:评论者
comment_author_email:评论者邮箱
comment_author_url:评论者网址
comment_author_IP:评论者 IP
comment_date:评论时间
comment_date_gmt:评论时间(GMT+0 时间)
comment_content:评论正文
comment_karma:未知
comment_approved:评论是否被批准
comment_agent:评论者的 USER AGENT
comment_type:评论类型(pingback/普通)
comment_parent:父评论 ID
user_id:评论者用户 ID(未登录用户的评论则为空

wp_links

link_id:自增唯一 ID
link_url:链接 URL
link_name:链接标题
link_image:链接图片
link_target:链接打开方式
link_description:链接描述
link_visible:是否可见(Y/N)
link_owner:添加者用户 ID
link_rating:评分等级
link_updated:未知
link_rel:XFN 关系
link_notes:XFN 注释
link_rss:链接 RSS 地址

wp_options

option_id:自增唯一 ID
blog_id:博客 ID,用于多用户博客,默认 0
option_name:键名
option_value:键值
autoload:WordPress 加载时自动载入(yes/no)

wp_postmeta

meta_id:自增唯一 ID
post_id:对应文章 ID
meta_key:键名
meta_value:键值

wp_posts

ID:自增唯一 ID
post_author:对应作者 ID
post_date:发布时间
post_date_gmt:发布时间(GMT+0 时间)
post_content:正文
post_title:标题
post_excerpt:摘录
post_status:文章状态(publish/auto-draft/inherit 等)
comment_status:评论状态(open/closed)
ping_status:PING 状态(open/closed)
post_password:文章密码
post_name:文章缩略名
to_ping:未知
pinged:已经 PING 过的链接
post_modified:修改时间
post_modified_gmt:修改时间(GMT+0 时间)
post_content_filtered:未知
post_parent:父文章,主要用于 PAGE
guid:唯一标识符(短链接)
menu_order:排序 ID
post_type:文章类型(post/page 等)
post_mime_type:MIME 类型
comment_count:评论总数

wp_termeta

meta_id:自增唯一 ID
term_id:分类 ID
meta_key:键名
meta_value:键值

wp_terms

term_id:分类 ID
name:分类名
slug:缩略名
term_group:分组

wp_term_relationships

object_id:对应文章 ID/链接 ID
term_taxonomy_id:对应自定义分类 ID
term_order:排序

wp_term_taxonomy

term_taxonomy_id:自定义分类 ID
term_id:分类 ID
taxonomy:分类(category/post_tag)
description:分类描述
parent:所属父分类 ID
count:文章数统计

wp_usermeta

umeta_id:自增唯一 ID
user_id:对应用户 ID
meta_key:键名
meta_value:键值

wp_users

ID:自增唯一 ID
user_login:登录名
user_pass:密码
user_nicename:昵称
user_email:Email
user_url:网址
user_registered:注册时间
user_activation_key:激活码
user_status:用户状态
display_name:显示名称