⑴ 如何进行文章分类和标签的数据库设计
几乎在所有web项目中,都涉及文章分类和标签的设计,应该说这是一个比较常见、典型的案例
站长并不保证我的思路就是最好的,只是分享出来大家一起交流一下,互相促进与提高
我们假设的开发项目是一个博客系统,最核心的部分就是与文章相关的,那么我们今天讨论如何设计博客系统的文章分类和标签
1、首先,分类和标签都是要和具体的文章相关联的,当然也可能一些文章既没有分类也没有标签,这一点是大家在写查询的时候容易疏忽的地方
因为我们的第一感觉就是,在查询文章列表的时候关联分类表,查出所有的文章和分类,对应关系一般是文章表的分类id对应分类表的id,使用where子句进行限定
这里就存在一个问题了,由于使用了where子句,那么只能查询有分类的文章,而没有分类的文章就查询不到了
这时候怎么办?应该使用连接查询,leftjoin,这要没有分类的文章,在文章分类id那一栏会显示null
通常我们只使用leftjoin,而很少使用rightjoin
2、一般,一篇文章最好只对应一个分类,当然如果你想要对应多个分类也可以
但站长并不提倡,文章在多个分类中重复会给人很不专业的感觉,即使有些文章可能确实设计到多方面的内容,那么你应就其中的侧重点来分类
而标签就不一样了,一篇文章可能有多个标签
这就意味着我们无法靠一个sql语句既查出所有文章的分类和标签,又做到查询结果中的文章id不重复
通常我们需要把查询出来的结果直接循环出来,那么这个结果一般是二维数组,第二维的都存储了唯一一篇文章的相关信息
但是,标签和文章是多对一的关系,多个标签对应一篇文章,如果你只用一条sql语句的话,那么我们查询出来的结果,当然也是多行,这不符合我们目标数据的要求
应此,需要在查询完文章和分类之后,在前面结果的基础上再查询一次文章标签,把两次的结果结合起来,存在数组中,这是对应文章列表页面的查询方法
对于具体文章页面,可以分两次查询
好了,还没有给出具体的数据库设计,就先说了如何查询结果,相信大家也看烦了,下面就举例说明:一、文章表:post,字段如下:id【唯一标识】,aid【作者id】,title【标题】,content【内容】,cid【分类id】二、分类表,category,字段如下:id【唯一标识,与post表的cid关联】,name【分类名】三、标签表,tag,字段如下:id【唯一标识】,name【标签名】四、标签与文章对应关系表,tag_,字段如下:id【唯一标识】,postid【文章id,与post表的id关联】,tagid【标签id,tag表的id关联】有朋友可能会问:为什么要单独用一个表来存储文章与标签圆伍睁的对应关系,为什么不可以直接在tag表中增加一个文章id字段呢,比如:tag表:id,postid,name这样做的话,并不是不可以,但是,由于一篇文章对应多个标签,所以name字段的值橘陪会出现很多重复,比如一篇文章,假设文章id为1,有2个标签,php和mysql,那么在tag表会这样存储:id:1,postid:1,name:phpid2,postid:1,name:mysql另一篇文章,假设id为2,有2个标签,也是php和mysql,那么在tag表中它会这样存储:id:3,postid:2,name:phpid4,postid:2,name:mysql大家很快就发现了问题,这样的设计name字段也就是标签的名称在同一张表中可能会大量橘岁重复
但是这样设计的好处是,如果你要查询一个标签下有多少篇文章,只要单独查这个表就可以了,比如要查询含有php标签的文章有多少篇,只需要selectcount(name)??fromtagwherename=’php’,就可以查出来
不好的地方是,如果要查询所有标签的集合,使用这种设计需要使用groupbyname语句来去除重复的行
如果用之前的那种,只需要select*fromtag就可以了
一时之间,好像不太好取舍
这两种设计都会有数据冢余,第一种tag_表中,存在tagid字段的重复;而这两种设计又都有各自的好处
那么我们到底该怎么选择呢?站长也说不好,所以无法为大家下结论
但是站长在研究wordpress数据结构的时候,发现wp是采用的单独建表存储文章与标签对应关系的方式
⑵ web系统设计(web系统)
您好,我就为大家解答关于web系统设计,web系统相信很多小伙伴还不知道,现在让我们一起来看看吧!1、Web应用程序是一种可以通过Web访问的...
您好,我就为大家解答关于web系统设计,web系统相信很多小伙伴还不知道,现在让我们一起来看看吧!
1、Web应用程序是一种可以通过Web访问的应用程序。
2、Web应用程序的一个最大好处是用户很容易访问应用程序。
3、用户只需要有浏览器即可,不需要再安装其他软件。
4、一个Web应用程序是由完成特定任务的各种Web组件(web components)构成的并通过Web将服务展示给外界。
5、在实际应用中,Web应用程序是由多个Servlet、JSP页面、HTML文件以及图像文件等组成。
6、所有这些组件相互协调为用户提供一组完整的服务。
7、(2)web设计博客系统扩展阅读:应用程序有两种模式C/S、B/S。
8、C/S是客户端/服务器端程序,也就是说这类程序一般独立运行。
9、而B/S就是浏览器端/服务器端应用程序,这类应用程序一般借助IE等浏览器来运行。
10、WEB应用程序一般是B/S模式。
11、Web应用程序首先是“应用程序”,和用标准的程序语言,如C、C++等编写出来的程序没有什么本质上的不同。
12、然而Web应用程序又有自己独特的地方,就是它是基于Web的,而不是采用传统方法运行的。
13、换句话说,它是典型的浏览器/服务器架构的产物。
14、参考资料来源:网络-Web应用程序参考资料来源:网络-WEB服务器。
⑶ 求一个javaweb做的博客系统源码。。。
你可以自己下载:www.websbook.com/code/code/index_jsp_blog.html
⑷ 如何用django开发一个简易个人Blog-Python
设计并实现一个基于Python的个人博客系统, 需要完成如下功能
完成个人博客系统的设计和开发
用户可以通过个人博客系统,发布最新的日志
运用所学专业理论及实践,分析解决遇到的问题以提高自己的动手、思考及解决问题的能力
文章管理模块:主要功能是管理员系统管理员登入后,浏览查看文章,删除不好的文章等功能
标签管理模块:主要功能是管理员系统管理员登入后,浏览查看相册,删除相册等功能
文章、标签浏览模块:主要功能是游客进入系统后。可以浏览文章列表,可以按标签查看文章
评论系统模块, 游客可以发表查看别人的评论
主要模块如下
安装与使用
项目采用Django框架进行开发, Django是一个用于快速web开发的优异方案(几乎没有之一), 获取源码后可以按照如下方式来运行代码
新建mysql数据库, 将数据库sql文件导入
修改源码包中的 csworkblog/settings.py 文件, 将DATABASES这个变量里的内容改一下, 这个就是你本地的数据库url和用户名密码, 其中NAME为你的database名称
进入源码包, 打开cmd, 运行命令 python manager.py runserver 就能启动服务, 端口为8000
http://localhost:8000/admin 为后台管理界面, 管理员用户名密码为 admin 123456, 可以进行文章管理标签管理评论管理
界面还是比较好看的, 项目截图源码下载地址 cs-work.com/p/21031