紫郢青索

知之者不如好之者,好之者不如乐之者

用户工具

站点工具


PHP从0开始编写博客程序

学习一门编程语言,掌握它的最有效方法,就是不断的用它来开发我们想要的东西。

博客系统功能列表

下面我们就规划一下我们想要做的一个博客系统。功能我们罗列下:

  1. 管理后台
    1. 用户管理:增、删、改、查
    2. 日志管理:增、删、改、查
    3. 评论管理:增、删、改、查
  2. 博客前台
    1. 用户:注册、登录
    2. 日志:日志列表、日志详情
    3. 评论:发表评论、回复评论、评论列表
    4. 归档:标签归档、日期归档

数据模型设计

根据上面的功能我们整理出下面的数据模型

数据模型设计

DROP DATABASE IF EXIST marmot;
 
CREATE DATABASE marmot;
 
USE marmot;
 
# 文章 TABLE articles 
# ------------------------------------------------------------
DROP TABLE IF EXISTS `articles`;
 
CREATE TABLE `articles` (
  `id` INT(11) UNSIGNED NOT NULL AUTO_INCREMENT,
  `user_id` INT(11) NOT NULL COMMENT '用户id',
  `user_avatar` VARCHAR(500) NOT NULL DEFAULT '' COMMENT '头像',
  `user_name` VARCHAR(100) NOT NULL DEFAULT '' COMMENT '用户名',
  `title` VARCHAR(100) NOT NULL DEFAULT '' COMMENT '标题',
  `content` text NOT NULL COMMENT '内容',
  `description` text NOT NULL COMMENT '摘要',
  `ctime` TIMESTAMP NULL DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP COMMENT '创建时间',
  `utime` TIMESTAMP NULL DEFAULT NULL COMMENT '更新时间',
  `read_cnt` INT(11) DEFAULT '0' COMMENT '浏览数',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
 
 
 
# 评论 TABLE comments
# ------------------------------------------------------------
 
DROP TABLE IF EXISTS `comments`;
 
CREATE TABLE `comments` (
  `id` INT(11) UNSIGNED NOT NULL AUTO_INCREMENT,
  `article_id` INT(11) DEFAULT NULL COMMENT '文章id',
  `user_id` INT(11) DEFAULT NULL COMMENT '用户id',
  `user_name` VARCHAR(100) DEFAULT NULL COMMENT '用户名',
  `user_avatar` VARCHAR(500) DEFAULT NULL COMMENT '头像',
  `content` text COMMENT '内容',
  `ctime` TIMESTAMP NULL DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP COMMENT '创建时间',
  `utime` TIMESTAMP NULL DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
 
 
 
# 标签、文章映射关系 TABLE tag_maps
# ------------------------------------------------------------
 
DROP TABLE IF EXISTS `tag_maps`;
 
CREATE TABLE `tag_maps` (
  `article_id` INT(11) NOT NULL COMMENT '文章id',
  `tag_id` INT(11) NOT NULL COMMENT '标签id',
  PRIMARY KEY (`article_id`,`tag_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
 
 
 
# 标签 TABLE tags
# ------------------------------------------------------------
 
DROP TABLE IF EXISTS `tags`;
 
CREATE TABLE `tags` (
  `id` INT(11) UNSIGNED NOT NULL AUTO_INCREMENT,
  `name` VARCHAR(100) NOT NULL DEFAULT '' COMMENT '标签名',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
 
 
 
# 用户 TABLE users
# ------------------------------------------------------------
 
DROP TABLE IF EXISTS `users`;
 
CREATE TABLE `users` (
  `id` INT(11) UNSIGNED NOT NULL AUTO_INCREMENT,
  `name` VARCHAR(100) NOT NULL DEFAULT '' COMMENT '用户名',
  `password` VARCHAR(100) NOT NULL DEFAULT '' COMMENT '密码',
  `email` VARCHAR(100) NOT NULL DEFAULT '' COMMENT '邮箱',
  `avatar` VARCHAR(500) DEFAULT NULL COMMENT '头像',
  `ctime` TIMESTAMP NULL DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP COMMENT '创建时间',
  `utime` TIMESTAMP NULL DEFAULT NULL COMMENT '更新时间',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

接下来规划 ☞ 博客系统结构