几乎在所有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语句来去除重复的行
如果用之前的那种,只需要selectfromtag就可以了
一时之间,好像不太好取舍
这两种设计都会有数据冢余,第一种tag_表中,存在tagid字段的重复;而这两种设计又都有各自的好处
那么我们到底该怎么选择呢?站长也说不好,所以无法为大家下结论
但是站长在研究wordpress数据结构的时候,发现wp是采用的单独建表存储文章与标签对应关系的方式
属于文本框。Access数据库中,可用于输入或编辑字段数据的交互控件是文本框。数据库系统(database systems),是由数据库及其管理软件组成的系统。是为适应数据处理的需要而发展起来的一种较为理想的数据处理的核心机构。
标签怎么设计数据库。数据库的构成数据库要从一个开始开始构建,数据库构建完成后,会进行分析与分析,从而建立数据库结构(即数据库文件、图示等)。分析阶段:根据产品需要,对数据库中各个数据模块的属性及状态分析,提出建立数据库结构框图的建议。方案评价阶段:根据产品需要,评价设计方案中是否考虑到了数据库的可行性,是否对产品的可用性提出了具体的改进,是否采用了现有的建议方案,或者是否采用不合理的建议方案。计算机信息技术的飞速发展,为产品设计提供了更多的应用可能,同时也为更多的企业提供了服务。当前计算机信息技术的发展,为产品设计提供了更多的应用可能,同时也为更多的企业提供了有效的宣传手段。当前应用的手段。所谓产品设计是因学技的基础,而设计产。
以上就是关于这段数据库如何设置推荐产品,需要添加什么标签,怎么添加全部的内容,包括:这段数据库如何设置推荐产品,需要添加什么标签,怎么添加、什么是数据库、如何进行文章分类和标签的数据库设计等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)