Я пытаюсь реализовать простую систему тегов в своем приложении. Когда пользователи хотят пометить объект, они могут использовать существующие теги и/или создавать новые теги одновременно. У меня есть тег таблицы, который просто сохраняет уникальное значение строки тега как ПК. В 'object_tag' У меня есть ссылка FK на этот столбец. В запросе от клиента может быть несколько тегов для одного объекта. На сервере я проведу все теги и сохраню их в 'object_tag'. Если тег не существует в таблице "тег", он должен быть вставлен первым.
Каков наиболее эффективный способ сделать это? Я мог бы просто проверить, существует ли тег перед каждой вставкой, но я хочу свести к минимуму ввод/вывод базы данных.
Вам понадобятся три таблицы:
Object - список объектов, первичный ключ oid Tag - список тегов, первичный ключ tid ObjectTag - пары значений oid, tid
Смотрите также:
Проблема. Вы хотите иметь схему базы данных, где вы можете пометить закладку (или сообщение в блоге или что-то еще) с таким количеством тегов, сколько хотите. Позже вы хотите запустить запросы, чтобы ограничить закладки объединением или пересечением тегов. Вы также хотите исключить (скажем: минус) некоторые теги из результата поиска.
см. также систему маркировки: вопросы решения Toxi