Лучший способ добавить запись в справочную таблицу, если не найден

1

Я пытаюсь реализовать простую систему тегов в своем приложении. Когда пользователи хотят пометить объект, они могут использовать существующие теги и/или создавать новые теги одновременно. У меня есть тег таблицы, который просто сохраняет уникальное значение строки тега как ПК. В 'object_tag' У меня есть ссылка FK на этот столбец. В запросе от клиента может быть несколько тегов для одного объекта. На сервере я проведу все теги и сохраню их в 'object_tag'. Если тег не существует в таблице "тег", он должен быть вставлен первым.

Каков наиболее эффективный способ сделать это? Я мог бы просто проверить, существует ли тег перед каждой вставкой, но я хочу свести к минимуму ввод/вывод базы данных.

Показать ещё 2 комментария
Теги:

1 ответ

0

Вам понадобятся три таблицы:

Object - список объектов, первичный ключ oid Tag - список тегов, первичный ключ tid ObjectTag - пары значений oid, tid

Смотрите также:

Теги: схемы базы данных

Проблема. Вы хотите иметь схему базы данных, где вы можете пометить закладку (или сообщение в блоге или что-то еще) с таким количеством тегов, сколько хотите. Позже вы хотите запустить запросы, чтобы ограничить закладки объединением или пересечением тегов. Вы также хотите исключить (скажем: минус) некоторые теги из результата поиска.

  • " MySQLicious " - использует одну денормализованную таблицу. MySQL вызывает импорт данных del.icio.us в таблицу с этой структурой.
  • Решение "Scuttle" - Scuttle организует свои данные в двух таблицах. Эта таблица "scCategories" является "тегом" -table и имеет внешний ключ для "закладки" -table.
  • "Токси-решение" Токси придумал три структуры -table. Через таблицу "tagmap" закладки и теги связаны с n-to-m. Каждый тег можно использовать вместе с разными закладками и наоборот. Эта DB-схема также используется wordpress.

см. также систему маркировки: вопросы решения Toxi

  • 0
    Да, так выглядит моя база данных. Мой вопрос заключается в том, как эффективно вставить теги объекта в базу данных. Когда я добавляю теги объекта, я не знаю, существует ли сам тег в таблице тегов, поэтому мне придется проверять, существует ли каждый тег перед каждой вставкой. Есть ли способ обойти это, поэтому мне не нужно проверять каждый раз?

Ещё вопросы

Сообщество Overcoder
Наверх
Меню