Подтвердить что ты не робот

Лучший способ хранить теги в таблице сервера sql?

Какой лучший способ хранить теги для записи? Просто используйте поле varchar? Как насчет выбора строк, содержащих тег x? Использовать аналогичный оператор?

спасибо!

4b9b3361

Ответ 1

Зависит от двух вещей:
1) Количество тегов/помеченных записей
2) Имеете ли вы религиозное мнение о нормализации:-)

Если вы не имеете дело с очень большими объемами данных, я бы предложил иметь таблицу "тегов", отображающую значения varchar для идентификаторов целого числа, а затем вторую таблицу, привязывающую помеченные записи к их идентификаторам тегов. Я бы предложил реализовать это сначала, а затем проверить, не соответствует ли он вашим потребностям в производительности. В этом случае сохраните одну таблицу с идентификатором для помеченной строки и фактическим текстом тега, но в этом я бы предложил использовать столбец char, поскольку он убьет ваш запрос, если оптимизатор выполнит полную таблицу сканируйте большую таблицу с столбцом varchar.

Ответ 3

Нет, как правило, это плохая идея поместить несколько частей данных в одно поле. Вместо этого используйте отдельную таблицу тегов (возможно, только с TagID и TagName), а затем для каждой записи укажите связанный с ней TagID. Если запись связана с несколькими тегами, вы будете иметь дубликаты записей, с той лишь разницей, что TagID.

Преимущество в том, что вы можете легко запросить тег, по записи и сохранить таблицу тегов отдельно (т.е. что, если имя тега меняется?).

Ответ 4

Используйте таблицу тегов с наименьшим допустимым первичным ключом. Если количество меток меньше 255, используйте байты (tinyint) или слово (smallint). Чем меньше ключ, тем меньше и быстрее индекс на внешнем ключе в главной таблице.