Задать вопрос
@NewTypes
На себя

Как правильно реализовать таблицу БД для создания тегов на сайте?

У меня нет практики написания backend"а сайтов, а потому прошу помощи.

Как я вижу:
- таблица tags с полями id, title и slug;
- таблица связи с полями tag_id и article_id;
- ну и конечно таблица articles с кучей полей и полем id;

Посоветуйте лучшие практики (статьи или прямо тут), где я мог бы посмотреть как это реализовывается. Ищу быстрое решение. Под тегами подразумеваются теги под статьями (как например на тостере). Я б нагуглил, да не могу. Спасибо за ответы
  • Вопрос задан
  • 5592 просмотра
Подписаться 3 Оценить Комментировать
Решения вопроса 1
AMar4enko
@AMar4enko
А на кой такой оверхед-то?
В таблицу object добавляете строковый "tags", где в строке теги через разделитель какой-нибудь.
Это поле используете для вывода тегов на странице
В таблице tag_object строковое поле tag, и id объекта, чтобы искать по конкретным тегам.
Плюс я бы еще держал таблицу tags, где был бы список всех уникальных тегов с количествами использований.

Зачем вам id для тегов? Про slug - если вам надо искать по транслитерованному тегу, то туда же в tag_object его пихайте.

Если у вас 10000 объектов и 1000 тегов, посчитайте, сколько в худшем случае записей у вас будет в таблице tag_object? В вашем случае, для того, чтобы просто получить список тегов к объекту, нужно будет столько геммороя поиметь - ладно, если к одной записи (и то ничего хорошего). А если к списку? Да с пагинацией? Присоединять таблицу с 10000000 ради списка тегов?
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
HDApache
@HDApache
PHP программист
Вы описали классическую связь многие ко многим через промежуточную таблицу, что тут еще придумаешь? Это и есть best practices... Только не забываем в mysql настроить ограничения foreign keys на промежуточной таблице.
Ответ написан
Комментировать
xaja
@xaja
Wordpress посмотрите как сделан
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы