Files
build-web-application-with-…/13.2.md
2012-12-07 00:57:46 +08:00

6.5 KiB
Raw Blame History

13.2 数据库设计

我们设计的博客是一个单用户的博客目前很多用户都采用wordpress作为自己的博客系统包括我自己也在使用wordpress,我们知道wordpress系统的一个主页乐观的估计也有20余次查询但这依然无法阻挡这款程序的流行,在去年对全球top10 blogger所使用的系统调查中,wordpress比其他系统有着明显的优势。

但是我们这次演示的博客系统是一个单用户的系统所以查询肯定不需要20余次数据库的结构也相对的简单很多因此单用户系统设计重点在于灵活性和结构化,当我们集中地暴露系统瓶颈,从另一个方面也可以集中精力去解决它。例如把数据库从MySQL改成redis。

博客主要分为博文、分类、页面、评论、用户、友情链接、tag那么我们可以采用内容表存储一些实体相关的信息文章内容、草稿、页面等信息meta表保存分类、tag等信息关系表维护两者的关系评论表存储用户的评论用户表存储博客用户的信息。

内容表

这张表主要用来存储内容实体信息,主要的表结构如下所示

键名 类型 属性 解释
cid int(10) 主键,非负,自增 post表主键
title varchar(200) 可为空 内容标题
slug varchar(200) 索引,可为空 内容缩略名
created int(10) 索引,非负,可为空 内容生成时的GMT unix时间戳
modified int(10) 非负,可为空 内容更改时的GMT unix时间戳
text text 可为空 内容文字
order int(10) 非负,可为空 排序
authorId int(10) 非负,可为空 内容所属用户id
type varchar(16) 可为空 内容类别
status varchar(16) 可为空 内容状态
password varchar(32) 可为空 受保护内容,此字段对应内容保护密码
commentsNum int(10) 非负,可为空 内容所属评论数,冗余字段

关系表

这张表维护着内容表和扩展表之间的关系

键名 类型 属性 解释
cid int(10) 主键,非负 内容主键
mid int(10) 主键,非负 扩展表主键

meta表

这张表主要用来存储和内容相关联的一些扩展信息包括tag、分类之类的信息

键名 类型 属性 解释
mid int(10) 主键,非负 扩展表主键
name varchar(200) 可为空 名称
slug varchar(200) 索引,可为空 扩展缩略名
type varchar(32) 可为空 扩展类型
description varchar(200) 可为空 扩展描述
count int(10) 非负,可为空 扩展所属内容个数,冗余字段
order int(10) 非负,可为空 扩展排序

评论表

实体内容表相应的评论信息表

键名 类型 属性 解释
coid int(10) 主键,非负,自增 comment表主键
cid int(10) 索引,非负 post表主键,关联字段
cid int(10) 索引,非负 post表主键,关联字段
created int(10) 非负,可为空 评论生成时的GMT unix时间戳
text text 可为空 评论内容
type varchar(16) 可为空 评论类型
status varchar(16) 可为空 评论状态
author varchar(200) 可为空 评论用户

用户表

存储博客系统中用户的信息:

键名 类型 属性 解释
uid int(10) 主键,非负,自增 user表主键
username varchar(32) 唯一 用户名
password varchar(32) 可为空 用户密码
created int(10) 非负,可为空 用户注册时的GMT unix时间戳
lastlogin int(10) 非负,可为空 最后登录时间
## 配置表 网站的配置信息表:
键名 类型 属性 解释
name varchar(32) 主键 配置名称
uid int(10) 主键,非负 配置所属用户,默认为0(全局配置)
value text 主键,非负,自增 配置值

上面设计了一个完整的博客系统所拥有的一些功能的表基于这些表我们可以设计出来一个强大的单用户博客基本能够实现wordpress的一些基础单用户博客的功能。