热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

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

开发环境:服务器系统:CentOS-6.xweb服务器:Apache-2.2.xphp版本:PHP-5.3.x开发工具:sublimetext3,谷歌浏览器数据库查询工具:phpm

开发环境:

  • 服务器系统: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
数据库结构设计:

概念结构设计:

  • 实体->属性->关系(橙色是已经创建设计,黑色表示待创建)
    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 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 视图

模块结构:(待续)

程序结构:(待续)

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


推荐阅读
  • CentOS 7部署KVM虚拟化环境之一架构介绍
    本文介绍了CentOS 7部署KVM虚拟化环境的架构,详细解释了虚拟化技术的概念和原理,包括全虚拟化和半虚拟化。同时介绍了虚拟机的概念和虚拟化软件的作用。 ... [详细]
  • 本文介绍了通过ABAP开发往外网发邮件的需求,并提供了配置和代码整理的资料。其中包括了配置SAP邮件服务器的步骤和ABAP写发送邮件代码的过程。通过RZ10配置参数和icm/server_port_1的设定,可以实现向Sap User和外部邮件发送邮件的功能。希望对需要的开发人员有帮助。摘要长度:184字。 ... [详细]
  • 本文介绍了lua语言中闭包的特性及其在模式匹配、日期处理、编译和模块化等方面的应用。lua中的闭包是严格遵循词法定界的第一类值,函数可以作为变量自由传递,也可以作为参数传递给其他函数。这些特性使得lua语言具有极大的灵活性,为程序开发带来了便利。 ... [详细]
  • 基于layUI的图片上传前预览功能的2种实现方式
    本文介绍了基于layUI的图片上传前预览功能的两种实现方式:一种是使用blob+FileReader,另一种是使用layUI自带的参数。通过选择文件后点击文件名,在页面中间弹窗内预览图片。其中,layUI自带的参数实现了图片预览功能。该功能依赖于layUI的上传模块,并使用了blob和FileReader来读取本地文件并获取图像的base64编码。点击文件名时会执行See()函数。摘要长度为169字。 ... [详细]
  • 本文介绍了使用Java实现大数乘法的分治算法,包括输入数据的处理、普通大数乘法的结果和Karatsuba大数乘法的结果。通过改变long类型可以适应不同范围的大数乘法计算。 ... [详细]
  • HDU 2372 El Dorado(DP)的最长上升子序列长度求解方法
    本文介绍了解决HDU 2372 El Dorado问题的一种动态规划方法,通过循环k的方式求解最长上升子序列的长度。具体实现过程包括初始化dp数组、读取数列、计算最长上升子序列长度等步骤。 ... [详细]
  • 本文介绍了OC学习笔记中的@property和@synthesize,包括属性的定义和合成的使用方法。通过示例代码详细讲解了@property和@synthesize的作用和用法。 ... [详细]
  • 后台获取视图对应的字符串
    1.帮助类后台获取视图对应的字符串publicclassViewHelper{将View输出为字符串(注:不会执行对应的ac ... [详细]
  • 《数据结构》学习笔记3——串匹配算法性能评估
    本文主要讨论串匹配算法的性能评估,包括模式匹配、字符种类数量、算法复杂度等内容。通过借助C++中的头文件和库,可以实现对串的匹配操作。其中蛮力算法的复杂度为O(m*n),通过随机取出长度为m的子串作为模式P,在文本T中进行匹配,统计平均复杂度。对于成功和失败的匹配分别进行测试,分析其平均复杂度。详情请参考相关学习资源。 ... [详细]
  • 动态规划算法的基本步骤及最长递增子序列问题详解
    本文详细介绍了动态规划算法的基本步骤,包括划分阶段、选择状态、决策和状态转移方程,并以最长递增子序列问题为例进行了详细解析。动态规划算法的有效性依赖于问题本身所具有的最优子结构性质和子问题重叠性质。通过将子问题的解保存在一个表中,在以后尽可能多地利用这些子问题的解,从而提高算法的效率。 ... [详细]
  • Java验证码——kaptcha的使用配置及样式
    本文介绍了如何使用kaptcha库来实现Java验证码的配置和样式设置,包括pom.xml的依赖配置和web.xml中servlet的配置。 ... [详细]
  • 本文介绍了指针的概念以及在函数调用时使用指针作为参数的情况。指针存放的是变量的地址,通过指针可以修改指针所指的变量的值。然而,如果想要修改指针的指向,就需要使用指针的引用。文章还通过一个简单的示例代码解释了指针的引用的使用方法,并思考了在修改指针的指向后,取指针的输出结果。 ... [详细]
  • 在project.properties添加#Projecttarget.targetandroid-19android.library.reference.1..Sliding ... [详细]
  • 猜字母游戏
    猜字母游戏猜字母游戏——设计数据结构猜字母游戏——设计程序结构猜字母游戏——实现字母生成方法猜字母游戏——实现字母检测方法猜字母游戏——实现主方法1猜字母游戏——设计数据结构1.1 ... [详细]
  • 本文介绍了一种解析GRE报文长度的方法,通过分析GRE报文头中的标志位来计算报文长度。具体实现步骤包括获取GRE报文头指针、提取标志位、计算报文长度等。该方法可以帮助用户准确地获取GRE报文的长度信息。 ... [详细]
author-avatar
冒泡鱼的快乐2011
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有