Wordpress-数据库结构分析

最近有机会接触了一下wordPress,在修改某些数据源和数据库结构的时候着实遇到了不少困难,写下来给大家分享下。

先说一下,我用的是2.5版本。不过个人觉得数据结构分析其实差不多。

数据表结构:

  • wp_commentmeta:存储评论的元数据
  • wp_comments:存储评论
  • wp_links:存储友情链接(Blogroll)
  • wp_options:存储WordPress系统选项和插件、主题配置
  • wp_postmeta:存储文章(包括页面、上传文件、修订)的元数据
  • wp_posts:存储文章(包括页面、上传文件、修订)
  • wp_terms:存储每个目录、标签
  • wp_term_relationships:存储每个文章、链接和对应分类的关系
  • wp_term_taxonomy:存储每个目录、标签所对应的分类
  • wp_usermeta:存储用户的元数据
  • wp_users:存储用户

数据表总体结构图:

按照功能大致分为五类。

  • user: 用户信息,包括wp_users表和wp_usermeta表。
  • link:链接信息,包括wp_links表。
  • post: 文章及评论信息,包括wp_posts、wp_postmeta、wp_comments。
  • category,link_category,tag:这个是比较复杂的信息模块,它包含了对分类,链接分类,标签的管理,包括wp_term,wp_term_relationships和wp_term_taxonomy表。
  • option: 全局设置信息,包括wp_options表。

wp_posts
作为一个博客系统,最核心的当然是博主发表的一些“文章”了,这些“文章”存放的地方就是这个 wp_posts 表了。注意,这里所说的“文章”是加引号的,因为这个表里存放的除了普通的文章之外,还有附件和页面(page)的一些信息。表里面的 post_type 这个字段就是用来标示类型的。还有一点需要注意的就是,这个表里一些字段是针对于 post_type 的特定类型的,比如 menu_order 这个字段是“页面(page)”特有的,用来指定“页面”的顺序。post_mime_type 是针对附件的,来指定附件的类型。

wp_postmeta
每篇文章的属性是不可能仅仅用 wp_posts 表里的那几个字段来完全标示的,往往还有一些因人而异的属性:写这篇文章时候的心情,地点等等。这些属性的名称和值类型都是不确定的,因 此,Wordpress 采用了元信息(meta)来表示它们。这个表很简单,只有 meta_id, post_id, meta_key, meta_value 这四个字段。post_id 是相关 post 的 id。我们注意到 meta_value 是 longtext 类型的,这里仅是用来存储值,至于值的确切类型,需要程序员来关心。
在撰写文章的时候,我们可以发现编辑框下面有一个 Custom Fields 的选项,我们可以在这里添加 post 的 meta 信息。

wp_comments
用户评论。除了评论的内容以外,还记录了评论用户的名字,邮箱,网址,浏览器类型等信息。比较重要的两个字段是 comment_post_ID 和 comment_approved,前一个用来指示这条评论隶属于哪一篇文章,后一个用来记录审核状况。还有一个比较有意思的是这个 commnet_agent 字段,我们可以利用这个字段来统计一下用户浏览器类型。

wp_users
用户帐号表。存储用户名、密码还有一些用户的基本信息。

wp_usermeta
类似上面的 wp_postmeta,存储一些因人而异的用户信息。(比如QQ?ICQ?)

wp_options
用来记录 Wordpress 的一些设置和选项。里面有一个 blog_id 字段,这个应该是用在 MU 版里面来标示不同的 Blog 的。

wp_links
用来存储 Blogroll 里面的链接。

wp_terms
wp_term_relationships
wp_term_taxonomy

这三个表是这里面关系最复杂的了,在 Wordpress 2.2 及以前的版本中是没有这三个表的,代之的是 wp_categories、wp_post2cat 和 wp_link2cat 这三个表。对比这两个版本我们可以发现:在 2.2 版和之前的版本,post 和 link 和 category 的关系都是通过各自单独的表来记录的。而在 2.3 版中加入了 tag 的支持,Wordpress 把 post、link、tag 的分类都抽象成了统一的形式,用新的三个表来记录这些信息。
wp_terms
记录分类,链接分类,标签的一些简要信息,包括名称,缩写。

wp_term_taxonomy
是对wp_terms中的信息的关系信息补充,有所属类型(category,link_category,tag),详细描述,父类,所拥有文章(链接)数量。

wp_term_relationships
关系表,多对多的,object_id是与不同的对象关联,例如wp_posts中的ID(wp_links中的link_id)等,term_taxonomy_id就是关联wp_term_taxonomy中的term_taxonomy_id。

还有一些字段我还不太清楚是有什么用的,例如:
wp_term_relationships中的term_order;
wp_terms中的term_group,wp_option中的一些值作用等等,在以后学习的过程中再作详细的讲解吧,如果大家知道的,也可以告诉我。

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

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

朋友用wordPress搭建了个关于美食健康的博客,欢迎大家去看看


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值