加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php – 这个标记解决方案的效果如何?

发布时间:2020-12-13 17:03:25 所属栏目:PHP教程 来源:网络整理
导读:我正在图像共享网站上工作,并希望为图像实现标记. 我读过问题#20856和#2504150 我对上述问题的方法几乎没有关注.首先,将图像链接到标签看起来很容易.然而,通过标签关系获取图像并不容易.这很简单,因为您必须从一个表中获取图像到标记的关系,然后使用一堆OR语
我正在图像共享网站上工作,并希望为图像实现标记.

我读过问题#20856和#2504150

我对上述问题的方法几乎没有关注.首先,将图像链接到标签看起来很容易.然而,通过标签关系获取图像并不容易.这很简单,因为您必须从一个表中获取图像到标记的关系,然后使用一堆OR语句(每个图像一个OR)进行大查询.

在我研究标记主题之前,我开始测试以下方法:

这个表作为例子:

Table: Image
Columns: ItemID,Title,Tags

Table: Tag
Columns: TagID,Name

Image表中的Tags列从带有短划线( – )的Tag表中获取一个带有多个tagID的字符串.

例如:

-65-25-105-

使用TagID 65,25和105链接图像.

使用这种方法,我发现通过标签获取图像更容易,因为我可以通过一个查询获取TagID并使用另一个简单查询获取所有图像,如:

SELECT * FROM Image WHERE Tags LIKE %-65-%

所以,如果我使用这种方法进行标记,

这有效吗?

通过LIKE%-65-%查询是一个缓慢的过程吗?

我将来可能面临哪些问题?

解决方法

你需要3个表.

Table: Image
Columns: ImageId,ItemID,Title

Table: Image_Tag
Columns: ImageId,TagId

Table: Tag
Columns: TagID,Name

然后获取您将使用的标记的所有图像:

SELECT ImageId,Title 
FROM Image_Tag LEFT JOIN Image USING (ImageId)
WHERE TagId = $TagId

这是处理关系数据库中多对多关系的典型方法.阅读约http://en.wikipedia.org/wiki/Database_normalization你可能会受益

编辑:我看到这已经是您引用的其他问题中的地址,所以我将进一步解释.我看到你做的最大问题是你不能利用索引你的id列,这会使你的查询效率降低.更新看起来也很笨拙.我强烈建议不要这样做,至少尝试使用3表解决方案.一旦它“点击”你,你会感谢我.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读