Результаты поиска
Рекомендуемый SQL дизайн базы данных для тегов или меток
Я слышал о нескольких способах реализации тегирования; использование таблицы сопоставления между TagID и ItemID (имеет смысл для меня, но масштабируется ли она?), добавление фиксированного числа возможных столбцов TagID к ItemID (кажется, это плохая идея), сохранение тегов в текстовом столбце, разделенном запятыми (звучит безумно, но может сработать). Я даже слышал, что кто-то рекомендовал разреженную матрицу, но тогда как же имена тегов растут изящно?
Я пропустил лучшую практику для тегов?
SQL many-to-many соответствие
Я внедряю систему тегов для веб-сайта. Существует несколько тегов на объект и несколько объектов на тег. Это достигается путем ведения таблицы с двумя значениями для каждой записи, по одному для идентификаторов объекта и тега.
Я ищу, чтобы написать запрос, чтобы найти объекты, которые соответствуют заданному набору тегов. Предположим, у меня были следующие данные (в формате [object] - > [tags]* )
apple -> fruit red food
banana -> fruit yellow food
cheese -> yellow food
firetruck -> vehicle red
Если я хочу соответствовать (красный), я должен получить apple и firetruck. Если я хочу соответствовать (фрукты, еда), я должен получить (яблоко, банан).
Как написать запрос SQL do do what I want?
@Jeremy Рутен,
Спасибо за ваш ответ. Используемая нотация использовалась для предоставления некоторых образцов данных - в моей базе данных есть таблица с 1 идентификатором объекта и 1 тегом на запись.
Во-вторых, моя проблема заключается в том, что мне нужно получить все объекты, соответствующие всем тегам. Подставляя свой OR вместо AND вот так:
SELECT object WHERE tag = 'fruit' AND tag = 'food';
Не дает никаких результатов при запуске.