Wordpress数据库分析: 整体结构
Wordpress的官方文档对数据库的结构描述得并不充分,索性自己来分析一下。首先从整体结构入手。 下面是2.0.5版的数据库结构图(E-R图)。为了节约篇幅,这里仅列出了主键和外键。 图中菱形表示1:n的关系,白色部分为1,黑色部分为n。
Wordpress共有10个表,按照功能大致分为四类。
- user: 用户信息,包括
wp_users
表和wp_usermeta
表。 - post: 文章及评论信息,包括
wp_posts
、wp_postmeta
、wp_comments
、wp_post2cat
以及wp_categories
五个表。 - link: 链接信息,包括
wp_links
表和wp_linkcategories
表。 - option: 全局设置信息,包括
wp_options
表。
个人认为这个数据库有两个冗余的地方。一个是wp_post2cat
表中的主键rel_id
,其实可以不要rel_id
,而使用post_id
和category_id
两列作为主键;
另一个是wp_options
表,option_id列为自动增长列,仅使用该列即可作为主键,而不需要option_id
、blog_id
、option_name
三列联合做主键。
另外,表的命名规则也很有意思。基本规则总结如下:
- 保存对象的基本属性,命名为
wp_objects
,使用复数(如wp_posts
,wp_comments
); - 保存对象的扩展属性,命名为
wp_objectmeta
,使用单数(如wp_postmeta
,wp_usermeta
); - 多对多关系,命名为
wp_a2b
,其中a和b分别为多对多关系两端的对象名的缩写(如wp_post2cat
)。