Лучшая практика для хранения тегов в базе данных?
Я разработал сайт, который использует теги (ключевые слова) для классификации фотографий. Сейчас в моей базе данных MySQL есть таблица со следующей структурой:
image_id (int)
tag (varchar(32))
Каждый раз, когда кто-то маркирует изображение (если тег является действительным и имеет достаточно голосов), оно добавляется в базу данных. Я думаю, что это не оптимальный способ сделать что-то, так как теперь, когда у меня есть более 5000 изображений с тегами, таблица тегов содержит более 40000 записей. Я боюсь, что это начнет влиять на производительность (если это уже не влияет на это).
Я рассмотрел эту другую структуру, думая, что было бы быстрее выбрать теги, связанные с конкретным изображением, но тогда это выглядит ужасно, когда я хочу получить все теги или, например, самый популярный:
image_id (int)
tags (text) //comma delimited list of tags for the image
Есть ли правильный способ сделать это или оба пути более или менее одинаковы? Мысли?