mysql хранение данных в нескольких таблицах или объединение?

#php #mysql

#php #mysql

Вопрос:

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

Лучше ли хранить ВСЕ комментарии в одной таблице, где у вас есть столбец, указывающий на то, что комментарий был опубликован, например, блог, картинка и т.д.

Или лучше хранить их в отдельных таблицах, таких как таблица «blogcomments«, таблица «picturecomments» и т.д.? Скажем, для сайта с более чем 10000 пользователями?

Спасибо

Ответ №1:

Если во всех комментариях хранятся одни и те же данные (например, содержимое комментария, пользователь, опубликовавший комментарий, и т.д.), То для публикации имело бы смысл сохранить их все в одной таблице. Если у них разные форматы, то поместите их в отдельные таблицы.

Комментарии:

1. Да, все они имеют одинаковый формат. Например, «комментарий», «идентификатор пользователя», «идентификатор владельца» и так далее. Хорошо, тогда я перейду к первому решению и сохраню их все в одной таблице. Спасибо за быстрый ответ 🙂 Оценен по достоинству!

2. Еще один вопрос. Каков наилучший подход к выполнению этого тогда? Скрытое поле ввода, например, с «типом»? Или, может быть, проверьте, на какой странице находится пользователь, и добавьте соответствующий тип для этого?

3. @George Я думаю, стоит добавить столбец «тип» и иметь идентификатор ссылки в другую таблицу. Таблица может быть похожа на comment_type (Id, Name), где название — Фотография, видео, блог и так далее.

4. Да, это хорошая идея для экономии места 🙂 Но как мне передать эту информацию, скажем, из блога, когда пользователь делает комментарий? Как увидеть, где пользователь оставил комментарий? откуда берется идентификатор ссылки из вашего примера?

Ответ №2:

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