我有一个名为tags
的图像表。典型的条目如下所示:
id link tags
-------------------
1 [link] funny,not-cool,work
我有一个搜索页面,用户可以在其中输入标签来搜索图像。他们可以输入以逗号分隔的任意数量的标签
Search: funny, fall, fail
问题是,在数据库中搜索这些标签的最佳方法是什么?一个简单的LIKE
会是吗?我知道将每个标记添加到不同的表中并且不用逗号分隔可能更为理想,所以如果我需要更改标记的工作方式,我将会这样做。
答案 0 :(得分:0)
这里有多个表可能会更好。第一个表格将被称为images
,只有id
和link
。第二个表格将被称为tags
,每行都是一个特定标记,例如列id
和tag
。第三个表是一个名为imagetags
的联接表,列id
,image
和tag
。 image
中的imagetags
列将是images
的外键,而tag
列将是tags
的外键。
使用示例搜索,SQL将类似于:
SELECT images.link
FROM images
JOIN imagetags on images.id = imagetags.image
JOIN tags on tags.id = imagetags.tag
WHERE tags.tag in ('funny','fall','fail')