Q: Как правильно сделать БД для блога с поиском по тэгам? Добрый день.
Я сейчас в учебных целях пробую создать с нуля блог - просто чтобы понять внутреннюю механику подобных веб-приложений.
Пытаюсь распланировать БД, но поскольку в этой области я нуб, возникают вопросы.
Вот один из них:
Я хочу сделать, чтобы посты можно было помечать текстовыми тэгами, по которым потом осуществлять фильтрацию. Для каждого поста может быть список из нескольких тэгов, сколько именно - неизвестно.
Перечень тэгов заранее не определён, должна быть возможность создавать запись с тэгами, которые ранее ещё не использовались.
Но при этом хочется иметь возможность быстро получить список всех тэгов, существующих в блоге на данный момент.
Как это правильнее сделать в БД?
Мне приходит в голову только одно: сделать одно поле, куда вводить список тэгов через некий разделитель.
Но у меня сомнения: насколько такой подход эффективен в плане скорости поиска?
И как из него получить список всех существующих тегов? Можно ли это сразу сделать каким-то хитрым запросом? Или нужно получать это поле для всех записей, передавать его в серверный скрипт, который будет уже разрезать строки по разделителю, и составлять список, отлавливая повторы? И насколько это будет эффективно?
Понятно, что в рамках моего учебного примера это всё будет работать достаточно быстро, поскольку количество записей мизерное.
Но как подобную задачу правильно решать на реальных блоговых сервисах с большим количеством пользователей?
