【发布时间】:2014-05-06 06:18:02
【问题描述】:
我有一个表格,其中的行如下所示:
id : path : tags
1 : pictures/pic1.jpg : car bmw
3 : pictures/pic2.jpg : cat animal pussy
4 : pictures/pic3.png : gun
基本上它是一个画廊,我将图片的路径存储在表格中,以便我可以在网页上列出它们。
用户可以选择根据他提供的关键字搜索某些图片。因此,例如,他在搜索字段中输入“汽车枪”,然后为他提取具有这些标签之一的所有图片。 基本标签搜索:
SELECT * FROM pictures WHERE tags LIKE '%car%' OR tags LIKE '%gun%'
现在我想知道的是,存储标签的更好解决方案是什么?是上面描述的还是这个:
桌子图片:
id : path
1 : pictures/pic1.jpg
3 : pictures/pic2.jpg
4 : pictures/pic3.png
表格标签:
pic_id : tag
1 : car
1 : bmw
4 : gun
..and so on..
标签在这里存储在一个单独的表中,每个标签都有自己的行,所以在搜索过程中我将执行 JOIN 并以这种方式搜索匹配项。
哪种解决方案更好?
【问题讨论】:
-
您可能想阅读database normalization
-
我会选择“带有 pic_id 的表标签”,因为它更像是 SQL 变体的关系数据库。