2013-05-13 8 views
0

У меня есть таблица изображений с колонкой tags. Типичная запись будет выглядеть следующим образом:Поиск базы данных для определенных тегов

id link tags 
------------------- 
1  [link] funny,not-cool,work 

У меня есть страница поиска, где пользователи могут вводить тег для поиска изображений. Они могли бы ввести любое количество тегов через запятую

Search: funny, fall, fail 

Вопрос в том, что это лучший способ для поиска базы данных для этих тегов? Будет ли это просто LIKE? Я знаю, что было бы более удобно добавлять каждый тег в другую таблицу и не разделять их запятыми, поэтому, если мне нужно изменить способ работы тегов, я сделаю это.

+0

я думаю, у ответил на свои вопросы. отдельные строки и не похожи. (id, link) в 1 таблице и (id, tag) в другой – Drew

ответ

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') 
Смежные вопросы