Tag技术的实现思路

共用到文章表bc_Articles 、标签表bc_Tags 、标签关系表bc_TagsRelation 三个表 ,标签关系表其实是文章表和标签表之间多对多关系的产物。
为了以后可以对博客的文章、相册、视频之类的能够通用标签功能。所以在设计bc_TagsRelation表时将ArticleID用ObjectID代替,并新增了一个ObjectTypeID字段,用于标识ObjectID是属于什么类型的ID(本文中的ObjectTypeID 1为文章)
文章表bc_Articles                                         文章表测试数据内容
clip_image001clip_image002
标签表bc_Tags                                             标签表测试数据内容
clip_image003clip_image004
标签关系表bc_TagsRelation                            标签关系表测试数据内容
clip_image005clip_image006

clip_image007clip_image008单标签查询语句
clip_image008[1]clip_image007[1]/**//*单标签查询语句*/
clip_image009SELECT a.*
clip_image009[1]FROM bc_Tags t
clip_image009[2] INNER JOIN bc_TagsRelation tr 
clip_image009[3] ON t.TagID=tr.TagID
clip_image009[4] INNER JOIN bc_Articles a
clip_image009[5] ON tr.ObjectID=a.ArticleID
clip_image009[6]WHERE t.TagName='日子' AND tr.ObjectTypeID=1

执行结果:
clip_image010

clip_image007[2]clip_image008[2]显示热门标签
clip_image008[3]clip_image007[3]/**//*显示热门标签*/
clip_image009[7]
clip_image009[8]--方法一、
clip_image009[9]SELECT * FROM bc_Tags t ORDER BY TagCount DESC
clip_image009[10]
clip_image009[11]--方法二、
clip_image009[12]SELECT t.TagID,t.TagName,l.TagCount 
clip_image009[13] FROM bc_Tags t 
clip_image009[14] INNER JOIN (
clip_image009[15] SELECT TagID,Count(TagsRelationID) TagCount 
clip_image009[16] FROM bc_TagsRelation 
clip_image009[17] GROUP BY TagID) l 
clip_image009[18] ON t.TagID=l.TagID
clip_image009[19]ORDER BY l.TagCount DESC

执行结果:
clip_image011

clip_image007[4]clip_image008[4]根据文章ID罗列标签
clip_image009[20]
clip_image008[5]clip_image007[5]/**//*根据文章ID罗列标签*/
clip_image009[21]
clip_image009[22]--假设ObjectTypeID为1时代表是文章,我们显示文章ID为3的所有标签
clip_image009[23]
clip_image009[24]SELECT t.TagID,t.TagName 
clip_image009[25]FROM bc_TagsRelation tr 
clip_image009[26] INNER JOIN bc_Tags t 
clip_image009[27] ON tr.TagID=t.TagID
clip_image009[28]WHERE tr.ObjectTypeID=1 AND tr.ObjectID=3

执行结果:
clip_image012

武汉asp.net

你可能感兴趣的:(职场,tag,休闲,tag技术)