开发环境:

  • 服务器系统:CentOS-6.x
  • web服务器:Apache-2.2.x
  • php版本:PHP-5.3.x
  • 开发工具:sublime text 3 ,谷歌浏览器
  • 数据库查询工具:phpmyadmin
  • 协作工具:乌龟SVN

约定:

  • 数据表前缀:blog_
  • 数据表主键名:表名_id,自增,不为空
  • 时间字段类型统一为timestamp,每个表必须含有创建时间(默认当前时间),更新时间(默认由mysql更新)
  • 字符集采用UTF-8

项目定义:多用户博客系统--运行在SAE上,基于php的最新3.0CodeIgniter框架,前台界面采用最新国内开源amazeui的移动端UI框架,后台管理端采用google出的angularjs的JS框架,一个多用户博客系统。

参考资料:

数据库结构设计:

概念结构设计:

  • 实体->属性->关系(橙色是已经创建设计,黑色表示待创建)
    1. 用户
    2. 角色
    3. 权限点
    4. 分类/标签
    5. 文章
    6. 图片
    7. 上传文件
    8. 评论
    9. 系统配置
    10. 站内信
    11. 公告
    12. 友情链接

物理结构设计:

--
-- 表的结构 `blog_access_point`
-- CREATE TABLE IF NOT EXISTS `blog_access_point` (
`access_point_id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT '权限点id',
`name` varchar(200) NOT NULL COMMENT '权限点',
`user_id` int(10) unsigned NOT NULL COMMENT '创建者id',
`create_time` datetime NOT NULL COMMENT '创建时间',
PRIMARY KEY (`access_point_id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='权限点表' AUTO_INCREMENT=1 ; --
-- 转存表中的数据 `blog_access_point`
-- -- -------------------------------------------------------- --
-- 表的结构 `blog_comments`
-- CREATE TABLE IF NOT EXISTS `blog_comments` (
`comment_id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT '评论ID',
`comment_object_id` int(10) unsigned NOT NULL COMMENT '评论对象ID',
`comment_object_type` tinyint(1) NOT NULL COMMENT '评论对象类型 0:文章 1:评论',
`comment_author` varchar(255) NOT NULL COMMENT '评论者',
`comment_content` text NOT NULL COMMENT '评论内容',
`comment_approved` tinyint(1) NOT NULL DEFAULT '' COMMENT '评论是否被批准 0:否 1:是',
`comment_author_ip` varchar(100) NOT NULL DEFAULT '' COMMENT '评论者ip',
`create_time` datetime NOT NULL COMMENT '评论时间',
`comment_agent` varchar(255) NOT NULL DEFAULT '' COMMENT '评论者agent',
`comment_parent` int(10) unsigned NOT NULL COMMENT '父评论ID',
`user_id` int(10) unsigned DEFAULT NULL COMMENT '评论者id',
PRIMARY KEY (`comment_id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='评论表' AUTO_INCREMENT=1 ; --
-- 转存表中的数据 `blog_comments`
-- -- -------------------------------------------------------- --
-- 表的结构 `blog_options`
-- CREATE TABLE IF NOT EXISTS `blog_options` (
`option_id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT '配置id',
`blog_id` int(10) unsigned NOT NULL COMMENT '博客id 就是用户id',
`option_name` varchar(200) NOT NULL COMMENT '配置名',
`autoload` tinyint(4) NOT NULL DEFAULT '' COMMENT '是否初始化时加载',
`option_value` text NOT NULL COMMENT '配置值',
PRIMARY KEY (`option_id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='配置表' AUTO_INCREMENT=1 ; --
-- 转存表中的数据 `blog_options`
-- -- -------------------------------------------------------- --
-- 表的结构 `blog_posts`
-- CREATE TABLE IF NOT EXISTS `blog_posts` (
`post_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`post_author` int(10) unsigned NOT NULL COMMENT '对应作者ID',
`create_time` datetime NOT NULL COMMENT '文章发布时间',
`post_content` longtext NOT NULL COMMENT '正文',
`post_title` text NOT NULL COMMENT '标题',
`post_excerpt` text NOT NULL COMMENT '摘录',
`post_status` tinyint(1) NOT NULL DEFAULT '' COMMENT '文章状态 0 未审核 1 正常',
`comment_status` tinyint(4) NOT NULL DEFAULT '' COMMENT '是否开启评论 0:不开启 1:开启',
`post_password` varchar(20) NOT NULL DEFAULT '' COMMENT '文章密码',
`post_name` varchar(200) NOT NULL DEFAULT '' COMMENT '文章缩略名',
`modify_time` datetime NOT NULL COMMENT '文章修改时间',
`menu_order` int(11) NOT NULL DEFAULT '' COMMENT '排序ID',
PRIMARY KEY (`post_id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='文章表' AUTO_INCREMENT=1 ; --
-- 转存表中的数据 `blog_posts`
-- -- -------------------------------------------------------- --
-- 表的结构 `blog_post_statistics`
-- CREATE TABLE IF NOT EXISTS `blog_post_statistics` (
`post_id` int(10) unsigned NOT NULL COMMENT '文章id',
`view_count` int(10) unsigned NOT NULL COMMENT '文章浏览数',
`comment_count` int(10) unsigned NOT NULL COMMENT '文章评论数',
UNIQUE KEY `post_id` (`post_id`,`view_count`,`comment_count`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='文章统计表'; --
-- 转存表中的数据 `blog_post_statistics`
-- -- -------------------------------------------------------- --
-- 表的结构 `blog_role`
-- CREATE TABLE IF NOT EXISTS `blog_role` (
`role_id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT '角色id',
`name` varchar(200) NOT NULL COMMENT '角色名',
`access_point` varchar(50) NOT NULL COMMENT '权限点',
`create_time` datetime NOT NULL COMMENT '创建时间',
`user_id` int(10) unsigned NOT NULL COMMENT '创建人id',
PRIMARY KEY (`role_id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='角色表' AUTO_INCREMENT=1 ; --
-- 转存表中的数据 `blog_role`
-- -- -------------------------------------------------------- --
-- 表的结构 `blog_terms`
-- CREATE TABLE IF NOT EXISTS `blog_terms` (
`term_id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT '分类方法ID',
`name` varchar(200) NOT NULL COMMENT '分类名',
`term_type` tinyint(1) NOT NULL COMMENT '分类方法:0:分类 1:标签',
`description` text NOT NULL COMMENT '分类方法描述',
`parent` int(10) unsigned NOT NULL DEFAULT '' COMMENT '所属父分类方法ID',
`count` int(11) NOT NULL COMMENT '文章数统计',
PRIMARY KEY (`term_id`),
UNIQUE KEY `name` (`name`,`term_type`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='分类,标签表' AUTO_INCREMENT=1 ; --
-- 转存表中的数据 `blog_terms`
-- -- -------------------------------------------------------- --
-- 表的结构 `blog_term_relationships`
-- CREATE TABLE IF NOT EXISTS `blog_term_relationships` (
`object_id` int(10) unsigned NOT NULL DEFAULT '',
`term_id` int(10) unsigned NOT NULL DEFAULT '',
`term_order` int(11) NOT NULL DEFAULT '',
`object_type` tinyint(1) NOT NULL COMMENT '0:文章 1:图片',
PRIMARY KEY (`object_id`,`term_id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='存储每个文章、链接和对应分类、标签的关系'; --
-- 转存表中的数据 `blog_term_relationships`
-- -- -------------------------------------------------------- --
-- 表的结构 `blog_upload`
-- CREATE TABLE IF NOT EXISTS `blog_upload` (
`upload_id` int(10) unsigned NOT NULL DEFAULT '' COMMENT '上传id',
`file_name` varchar(255) NOT NULL COMMENT '上传文件名',
`file_path` varchar(255) NOT NULL COMMENT '上传路径',
`file_md5` varchar(100) NOT NULL COMMENT '上传文件MD5值',
`create_time` datetime NOT NULL COMMENT '上传时间',
`file_status` tinyint(1) NOT NULL DEFAULT '' COMMENT '文件状态 0:已删除 1:正常',
`user_id` int(10) unsigned NOT NULL COMMENT '文件上传人id',
`file_type` tinyint(1) NOT NULL DEFAULT '' COMMENT '文件类型 0:图片',
PRIMARY KEY (`upload_id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='上传文件表'; --
-- 转存表中的数据 `blog_upload`
-- -- -------------------------------------------------------- --
-- 表的结构 `blog_users`
-- CREATE TABLE IF NOT EXISTS `blog_users` (
`user_id` int(10) unsigned NOT NULL COMMENT '用户id',
`user_login` varchar(60) NOT NULL COMMENT '登录账号',
`user_pass` varchar(64) NOT NULL COMMENT '登录密码',
`display_name` varchar(250) NOT NULL COMMENT '显示名称',
`registered_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '注册时间',
`user_status` tinyint(1) NOT NULL COMMENT '用户状态',
PRIMARY KEY (`user_id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='用户表'; --
-- 转存表中的数据 `blog_users`
--

系统结构设计:

项目的目录结构:

  • admin 后台文件夹
  • application 前台文件夹
  • system CI系统文件夹
  • admin.php 后台入口文件
  • index.php 前台入口文件

admin是application的复制文件夹,里面结构就是项目CI的主要目录结构

  • cache 缓存
  • config 项目配置
  • controllers 控制器
  • core 项目核心 一般用来扩展system目录core目录下的核心类
  • helpers 项目函数
  • hooks 钩子
  • language 语言
  • libraries 项目类
  • logs 项目日志
  • models 模型
  • third_party 第三方类库
  • views 视图

模块结构:(待续)

程序结构:(待续)

基于SAE+CodeIgniter3.0+管理端angularjs+前台amazeui的多用户博客系统V1.0--系统设计(一)的更多相关文章

  1. 【ASP.NET实战教程】基于ASP.NET技术下多用户博客系统全程实战开发(NNblog)

    岁末主推:牛牛老师主讲,多用户博客系统,基于ASP.NET技术,年后将带来移动业务平台项目项目目标: 打造个性品牌Blogo,定制多用户博客 为每一个博客用户提供个性化的 blogo解决方案,打造精品 ...

  2. 项目实战(连载):基于Angular2+Mongodb+Node技术实现的多用户博客系统教程(2)

    本章主要讲什么(一句话)?   <项目实战:基于Angular2+Mongodb+Node技术实现的多用户博客系统教程(2)> -- 基于MongoDB的MyBlog数据库知识技术储备(上 ...

  3. 四、Java多人博客系统-2.0版本

    由于时间关系,多人博客系统这里穿插一个2.0版本. 2.0版本本来是打算用于建立个人网站,但是后来发现个人建站需要购买域名服务器,还需要备案,很繁琐.最终放弃.完成此版本,最终也只是作为技术演练.此版 ...

  4. 基于HTML,css,jQuery,JavaScript,MySQL搭建博客系统

    一.登陆注册 二.登录验证码相关 三.博客首页显示相关 四.当前用户的家目录显示 五.点赞以及取消 六.父评论以及子评论操作 七.后台管理首页 八.文章的操作(增.删,改) 九.文件上传问题 十.me ...

  5. j2ee开源项目——IT学习者博客(itxxzblog v1.0)

    大家好,我是IT学习者-螃蟹,已经有近一周的时间没有更新文章了,作为回报,今天起将更新一个大件,也就是螃蟹还在进行中的IT学习者博客. IT学习者博客的初期设计已经完成,功能也已经完成了大半,具备了当 ...

  6. 基于 Express + MySQL + Redis 搭建多用户博客系统

    1. 项目地址 https://github.com/caochangkui/node-express-koa2-project/tree/master/blog-express 2. 项目实现 Ex ...

  7. 五、Java多人博客系统-2.0版本-数据库设计

    数据库设计表如下:文章类别表.文章表.评论表.留言表. 文章列表表:存放文章类别,首页菜单生成也是从这个表取的. 文章表:存放文章标题.发表时间.内容等信息. 评论表:文章评论内容. 留言表:用户发表 ...

  8. 七、Java多人博客系统-2.0版本-docker部署

    docker是当下很热门的技术,是对之前的部署系统方式的彻底改变.之前部署系统,需要安装数据库.初始化数据库,安装jdk,配置jdk,部署应用程序,修改配置文件等,很繁琐.一般现场运维人员很难搞定,现 ...

  9. 六、Java多人博客系统-2.0版本-代码实现

    1.前后端分离,后端使用spring boot,只负责提供数据,对外暴露Restful API.前端使用vue,只负责展示数据和向后台提交数据. 2.数据库使用mariadb,存储所有数据. 3.前端 ...

随机推荐

  1. RGB同步信号 DCLK/HS/VS/DE信号介绍

    来源:  http://www.cnblogs.com/general001/articles/3721683.html 只要是数字信号处理电路,就必须有时钟信号.在液晶面板中,像素时钟是一个非常重要 ...

  2. oracle Imp和exp以及导入常见的错误

    一 1) 数据库对象已经存在 一般情况, 导入数据前应该彻底删除目标数据下的表, 序列, 函数/过程,触发器等; 数据库对象已经存在, 按缺省的imp参数, 则会导入失败 如果用了参数ignore=y ...

  3. PAT 1012. The Best Rank

    To evaluate the performance of our first year CS majored students, we consider their grades of three ...

  4. 【iOS 7】使用UIScreenEdgePanGestureRecognizer实现swipe to pop效果

    在iOS 7还没有发布的时候,各种App实现各种的swipe to pop效果,比如这里有一份简单的demo. 在iOS 7上,只要是符合系统的导航结构: - (BOOL)application:(U ...

  5. JSONP安全防范解决方案新思路

    jsonp安全性防范,分为以下几点:1. 防止callback参数意外截断js代码,特殊字符单引号双引号,换行符均存在风险2. 防止callback参数恶意添加标签(如script),造成XSS漏洞3 ...

  6. 普通身份运行Tomcat

    普通身份运行Tomcat 转载1   权限分配问题 su - username -c “command”这样的形式可以使用任意一个有执行权限的用户执行 -c后边的命令. 注意,- username中间 ...

  7. 了解node.js

    转载自http://debuggable.com/posts/understanding-node-js:4bd98440-45e4-4a9a-8ef7-0f7ecbdd56cb 当我向人们介绍nod ...

  8. [Webpack 2] Tree shaking with Webpack 2

    The less code you can send to the browser, the better. The concept of tree shaking basically says th ...

  9. innodb_space工具解析 MYSQL 页图解

  10. allocator例子

    13.39 编写自己的StrVec,包括自己版本的reserve.capacity和resize. 13.40 为StrVec添加一个构造函数,它接受一个initializer_list<str ...