基于SAE+CodeIgniter3.0+管理端angularjs+前台amazeui的多用户博客系统V1.0--系统设计(一)
开发环境:
- 服务器系统: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框架,一个多用户博客系统。
参考资料:
- <细说php>
- wordpress数据库设计以及大牛的解释http://blog.csdn.net/ppiao1970hank/article/details/6301812
数据库结构设计:
概念结构设计:
- 实体->属性->关系(橙色是已经创建设计,黑色表示待创建)
- 用户
- 角色
- 权限点
- 分类/标签
- 文章
- 图片
- 上传文件
- 评论
- 系统配置
- 站内信
- 公告
- 友情链接
物理结构设计:
-- -- 表的结构 `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 '1' 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 '0' 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 '1' COMMENT '文章状态 0 未审核 1 正常', `comment_status` tinyint(4) NOT NULL DEFAULT '1' 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 '0' 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 '0' 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 '0', `term_id` int(10) unsigned NOT NULL DEFAULT '0', `term_order` int(11) NOT NULL DEFAULT '0', `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 '0' 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 '1' COMMENT '文件状态 0:已删除 1:正常', `user_id` int(10) unsigned NOT NULL COMMENT '文件上传人id', `file_type` tinyint(1) NOT NULL DEFAULT '0' 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 视图