2016-10-08 3 views
0

Я строю небольшой сайт социальной сети, у меня есть сомнения по поводу схемы базы данных:базы данных выборки схемы для хранения социальных медиа пост

Как я должен хранить сообщения (текст) пользователем?

У меня будет отдельная таблица POST и свяжет таблицу USERS с ней через таблицу USERS_POST.

Но каждый раз, чтобы отображать все сообщения в профиле пользователя, системе придется искать всю таблицу USERS_POST для идентификатора пользователя, а затем отображать?

Что еще мне делать?

Как я могу хранить несколько мест, в которых работал или изучался пользователь?

Я понимаю, что это широкий, но я новичок в базе данных. :)

ответ

0

Во-первых, не беспокойтесь слишком много, начните с того, чтобы заставить его работать и посмотреть, где у вас проблемы с производительностью. Возможно, база данных будет намного быстрее, чем вы ожидаете. Также часто бывает намного легче понять, какое лучшее решение - когда у вас есть слишком медленный запрос.

Что касается вашего дизайна, если сообщение никогда не связано с более чем одним пользователем, тогда забудьте таблицу USERS_POST и поместите идентификатор пользователя в таблицу POST. В любом случае индекс идентификатора пользователя поможет (как и при отсутствии необходимости читать всю таблицу), когда база данных станет большой.

Несколько мест для одного пользователя, который вы сохранили бы в дополнительной таблице. Например, называемый USERS_PLACES, дайте ему столбец user_id, чтобы связать его с USERS плюс другие столбцы для данных, которые вы хотите сохранить на месте.

BTW В postgresql вам может потребоваться сохранить все имена объектов (таблицы, столбцы, ...) в нижнем регистре, поскольку, если вы не позаботитесь всегда процитировать их как «ПОЛЬЗОВАТЕЛИ», postgresql сделает их строчными буквами, что может ввести в заблуждение.