Как правильно реализовать таблицу БД для создания тегов на сайте?
Вы описали классическую связь многие ко многим через промежуточную таблицу, что тут еще придумаешь? Это и есть best practices... Только не забываем в mysql настроить ограничения foreign keys на промежуточной таблице.
А на кой такой оверхед-то?
В таблицу object добавляете строковый "tags", где в строке теги через разделитель какой-нибудь.
Это поле используете для вывода тегов на странице
В таблице tag_object строковое поле tag, и id объекта, чтобы искать по конкретным тегам.
Плюс я бы еще держал таблицу tags, где был бы список всех уникальных тегов с количествами использований.
Зачем вам id для тегов? Про slug - если вам надо искать по транслитерованному тегу, то туда же в tag_object его пихайте.
Если у вас 10000 объектов и 1000 тегов, посчитайте, сколько в худшем случае записей у вас будет в таблице tag_object? В вашем случае, для того, чтобы просто получить список тегов к объекту, нужно будет столько геммороя поиметь - ладно, если к одной записи (и то ничего хорошего). А если к списку? Да с пагинацией? Присоединять таблицу с 10000000 ради списка тегов?