×

博客系统数据库设计 标签

博客系统数据库设计(如何进行高效的文章分类和标签的数据库设计)

admin admin 发表于2023-11-04 04:14:59 浏览40 评论0

抢沙发发表评论

本文目录

如何进行高效的文章分类和标签的数据库设计

几乎在所有web项目中,都涉及文章分类和标签的设计,应该说这是一个比较常见、典型的案例。站长并不保证我的思路就是最好的,只是分享出来大家一起交流一下,互相促进与提高。我们假设的开发项目是一个博客系统,最核心的部分就是与文章相关的,那么我们今天讨论如何设计博客系统的文章分类和标签。1、首先,分类和标签都是要和具体的文章相关联的,当然也可能一些文章既没有分类也没有标签,这一点是大家在写查询的时候容易疏忽的地方。因为我们的第一感觉就是,在查询文章列表的时候关联分类表,查出所有的文章和分类,对应关系一般是文章表的分类id对应分类表的id,使用where子句进行限定。这里就存在一个问题了,由于使用了where子句,那么只能查询有分类的文章,而没有分类的文章就查询不到了。这时候怎么办?应该使用连接查询,left join,这要没有分类的文章,在文章分类id那一栏会显示null。通常我们只使用left join,而很少使用right join。2、一般,一篇文章最好只对应一个分类,当然如果你想要对应多个分类也可以。但站长并不提倡,文章在多个分类中重复会给人很不专业的感觉,即使有些文章可能确实设计到多方面的内容,那么你应就其中的侧重点来分类。而标签就不一样了,一篇文章可能有多个标签。这就意味着我们无法靠一个sql语句既查出所有文章的分类和标签,又做到查询结果中的文章id不重复。通常我们需要把查询出来的结果直接循环出来,那么这个结果一般是二维数组,第二维的都存储了唯一一篇文章的相关信息。但是,标签和文章是多对一的关系,多个标签对应一篇文章,如果你只用一条sql语句的话,那么我们查询出来的结果,当然也是多行,这不符合我们目标数据的要求。应此,需要在查询完文章和分类之后,在前面结果的基础上再查询一次文章标签,把两次的结果结合起来,存在数组中,这是对应文章列表页面的查询方法。对于具体文章页面,可以分两次查询。好了,还没有给出具体的数据库设计,就先说了如何查询结果,相信大家也看烦了,下面就举例说明:一、文章表:post,字段如下:id【唯一标识】,aid【作者id】,title【标题】,content【内容】,cid【分类id】二、分类表,category,字段如下:id【唯一标识,与post表的cid关联】,name【分类名】三、标签表,tag,字段如下:id【唯一标识】,name【标签名】四、标签与文章对应关系表,tag_relationship,字段如下: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标签的文章有多少篇,只需要select count(name) 02from tag where name=’php’,就可以查出来。不好的地方是,如果要查询所有标签的集合,使用这种设计需要使用group by name语句来去除重复的行。如果用之前的那种,只需要select * from tag就可以了。一时之间,好像不太好取舍。这两种设计都会有数据冢余,第一种tag_relationship表中,存在tagid字段的重复;而这两种设计又都有各自的好处。那么我们到底该怎么选择呢?站长也说不好,所以无法为大家下结论。但是站长在研究wordpress数据结构的时候,发现wp是采用的单独建表存储文章与标签对应关系的方式。另外,如何设计有时候也是取决具体功能的需求的,所以这个问题就留给大家一起来讨论吧~ 标签:分类和标签, 博客数据库设计

博客系统开发需要建立哪些数据表

鉴于你的博客系统的大小,所需要的数据表也会有不同!!但是不管你的系统大小,还是有几个表是必备的。如:管理员表,会员信息表,日志表,(日志分类表,)相册表,(相册分类表,)网站公告表,留言表。这几个是必备的,一般的博客网站都应该有如此之类的。如果想详细了解,请把你的要求说的详细一点。(括号中的内容,可以再删减的)

博客系统的数据库需要设计哪些表

你一般需要作者表、文章表、类别表、评论表, 作者表用来存放注册用户信息:用户ID、用户名、密码、发表数、最后发表日期;用户ID为主键; 文章表用来存放所有文章信息:文章ID、用户ID、类别ID、标题、正文、点击数;文章ID为主键; 类别表用来存放所有文章类别信息:用户ID、类别ID、类别名称;用户ID、类别ID为主键; 评论表用来存放所有的评论:文章ID、评论ID、评论人名称、评论内容、作者回复内容;评论ID为主键;文章ID为外键; 我以前自己写的博客系统把所有人的文章分类统一进行管理,这样可以在一个总目录下分类浏览所有文章,因为我的系统在公司内部网络运行,用户不是很多。如果你也打算这样,那么分类表设计需要麻烦一点,要么管理员维护,要么作者申请、管理员审核,要么作者先直接使用,管理员负责调整。

如何进行文章分类和标签的数据库设计

几乎在所有web项目中,都涉及文章分类和标签的设计,应该说这是一个比较常见、典型的案例。站长并不保证我的思路就是最好的,只是分享出来大家一起交流一下,互相促进与提高。我们假设的开发项目是一个博客系统,最核心的部分就是与文章相关的,那么我们今天讨论如何设计博客系统的文章分类和标签。1、首先,分类和标签都是要和具体的文章相关联的,当然也可能一些文章既没有分类也没有标签,这一点是大家在写查询的时候容易疏忽的地方。因为我们的第一感觉就是,在查询文章列表的时候关联分类表,查出所有的文章和分类,对应关系一般是文章表的分类id对应分类表的id,使用where子句进行限定。这里就存在一个问题了,由于使用了where子句,那么只能查询有分类的文章,而没有分类的文章就查询不到了。这时候怎么办?应该使用连接查询,left join,这要没有分类的文章,在文章分类id那一栏会显示null。通常我们只使用left join,而很少使用right join。2、一般,一篇文章最好只对应一个分类,当然如果你想要对应多个分类也可以。但站长并不提倡,文章在多个分类中重复会给人很不专业的感觉,即使有些文章可能确实设计到多方面的内容,那么你应就其中的侧重点来分类。而标签就不一样了,一篇文章可能有多个标签。这就意味着我们无法靠一个sql语句既查出所有文章的分类和标签,又做到查询结果中的文章id不重复。通常我们需要把查询出来的结果直接循环出来,那么这个结果一般是二维数组,第二维的都存储了唯一一篇文章的相关信息。但是,标签和文章是多对一的关系,多个标签对应一篇文章,如果你只用一条sql语句的话,那么我们查询出来的结果,当然也是多行,这不符合我们目标数据的要求。应此,需要在查询完文章和分类之后,在前面结果的基础上再查询一次文章标签,把两次的结果结合起来,存在数组中,这是对应文章列表页面的查询方法。对于具体文章页面,可以分两次查询。好了,还没有给出具体的数据库设计,就先说了如何查询结果,相信大家也看烦了,下面就举例说明:一、文章表:post,字段如下:id【唯一标识】,aid【作者id】,title【标题】,content【内容】,cid【分类id】二、分类表,category,字段如下:id【唯一标识,与post表的cid关联】,name【分类名】三、标签表,tag,字段如下:id【唯一标识】,name【标签名】四、标签与文章对应关系表,tag_relationship,字段如下: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标签的文章有多少篇,只需要select count(name) �0�2from tag where name=’php’,就可以查出来。不好的地方是,如果要查询所有标签的集合,使用这种设计需要使用group by name语句来去除重复的行。如果用之前的那种,只需要select * from tag就可以了。一时之间,好像不太好取舍。这两种设计都会有数据冢余,第一种tag_relationship表中,存在tagid字段的重复;而这两种设计又都有各自的好处。那么我们到底该怎么选择呢?站长也说不好,所以无法为大家下结论。但是站长在研究wordpress数据结构的时候,发现wp是采用的单独建表存储文章与标签对应关系的方式。另外,如何设计有时候也是取决具体功能的需求的,所以这个问题就留给大家一起来讨论吧~ 标签:分类和标签, 博客数据库设计

博客数据库表设计follow什么意思

follow jane`s blog跟踪简`的博客follow推球,跟球打法(使竿击的球在击中目的球后继续滚动的打法); 第三人称单数:follows过去分词:followed现在进行时:following过去式:followed

关于毕业设计课题--博客系统要怎么做啊

给你一个范文借鉴一下《asp校园网站设计开题报告》毕业设计(论文)开题报告设计(研究)内容和意义:设计的研究内容是网站速度与安全性的实现问题。随着计算机科学和Internet技术的高速发展,电子商务日趋成熟,电脑作为一种必备工具正迅速走进人们的日常生活,以此伴生的一系列与此相关产业,正在发生着日新月异的变化,而互联网的出现正在改变人们传统生活的方式,包括工作,学习,交友等,我们的地球不再巨大,网络拉近了我们的距离,使我们的地球变成了一个村。在互联网这个虚拟社区里面,林立着各种类型大大小小的基于B/S模式的网站,在这些网站里面充斥了那些我们所需要的信息。而这些信息的来源,则是来自于各个网站服务器下面的数据库。如何减少服务器的压力,提高用户访问网站的速度,同时提高网站数据库的安全性,成为一个非常重要的问题。作为网络开发技术来说,在我国,大部分网站采用的技术是ASP与PHP,但是因为跨平台性差的缘故,(ASP主要是在Windows平台上,PHP主要是在Linux平台上),而且又因为JSP的安全性相对来说比较高(国外大型的综合性网站基本上采用了JSP技术开发系统),所以趋势正在朝JSP的方向发展。但是如果要换成更好的开发语言,需要把整个网站系统重新开发的缘故,所以很多网站在很长一段时间内都会安于现状不考虑换系统,同时也因为ASP与PHP开发技术相对于JSP来说门槛比较低,所以依然会有生存的空间。从许多网站系统的不足来说,有许多的网站在开发的时候对于一些脚本语言使用不够灵活,把一些功能都通过动态页面去实现,增加了服务器的负担,导致网站相应的速度缓慢,同时在静态页面制作上因为页面的结构原因,导致客户端下载相应页面过程缓慢,影响速度。在数据库方面,表的结构设计是否合理,在制作的过程中是否考虑到了三个范式,对于查询语句,索引语句编写是否合理,会影响服务器的相应时间及负担,以及在程序编写的时候是否考虑到了一些安全隐患,(如SQL注入问题)所以,如何解决这些问题,对于网站建设就显得十分必要。因此,网站的建设主要从以下五点着手:1、实用性。详细了解客户需求,商务网站设计切实客户公司形象,加速公司信息化进程。 2、科学性。采用先进的设计思路规划网站,使商务网站适合相应的服务行业,并且得到最大的有效利用。 3、安全性。采用可靠的安全技术标准确保网站数据信息的安全,为网站运行营造安全环境。 4、可扩展性。可以根据公司发展,以及对网站商务功能的增加,对原有商务网站进行功能扩展。 5、交互性。开发高效的交互功能,使公司与客户实现及时有效的沟通,建立一个和谐完满的网络虚拟社区。以以上五点出发,以解决网站的响应速度与安全性为主体思路,开发系统,实现系统,解决问题。二、 相关内容:本课题是面向服务行业的网站设计,重点是研究网络数据库的开发与应用问题。具体体现为电子商务网站——校园服务网站。通过建立一系列的版块,如BBS论坛、聊天室等形式,为网站的运营提供良好的网络交流渠道。三、 研究方案和进度安排:第一步:部署开发环境,做系统规划,准备所需要的开发软件,确定功能块,建模后导入Sql Server。第二步:写store procedure。将网站所需要的store procedure全部写好。第三步:写Manager层。就是为每一个store procedure写一个对应method。第四步:由美工根据网站的功能块创建DEMO,确定网站的具体风格。第五步:将表单放入所需要的页面的对应位置,按规则取好名称,并设置表单对应的属性,如不能为空,输入字符的合法判断等。第六步:实现表单里的各种和数据库的连接,一般就是增、删、改、查。实际在做的时候就是对Manager这层方法的调用,传入参数,获得返回的DataSet而已。第七步:部分调整,检测,再调整。 第八步:部署运行环境。(可另加页)设计(研究)方案和进度安排: 第一阶段2006年3月中旬,熟悉毕业设计的思路,先从小的、局部的功能开始做。同时进行外文翻译、文献综述工作。第二阶段4月上旬,文献综述、外文翻译完成,布置具体的工作,我得到的任务是和楼媛同学共同完成某商务网站的设计开发。第三阶段4月中、下旬,毕业设计中期检查,对外文翻译、文献综述进行修改、打印,提交学院检查。第四阶段5月上、中旬,完成开发、论文初稿。开始具体的编程工作,于其他同学进行良好的沟通,以顺利的完成毕业设计第五阶段5月中、下旬,论文修改、定稿、接受评阅阶段主要参考文献资料: 刘军,董保田.电子商务系统的分析与设计.高等教育出版社 曹建主编,凌杰,吴昱亭,李宗若,陈琳编著.ASP实例教程.电子工业出版社,2000.12 张孝祥,张红梅.Javascript网页开发-体验式学习教程,清华大学出版社,2004.11指导教师意见:指导教师签字: 年 月 日

怎样为django个人博客设计mysql数据库

 修改配置项:打开已经创建好的django项目,在INSTALLED_APPS添加自己的工程名称。修改DATABASES项中配置的内容。INSTALLED_APPS = ( ’django.contrib.admin’, ’django.contrib.auth’, ’django.contrib.contenttypes’, ’django.contrib.sessions’, ’django.contrib.messages’, ’django.contrib.staticfiles’, ’MyProjectName’,)DATABASES = { ’default’: { ’ENGINE’: ’django.db.backends.mysql’, ’NAME’: ’djangoTest’, ’USER’:’Eva_J’,