2016-12-29 5 views
0

Приложение Я должен разработать следующий:Каждый пользователь может создать группу с функциями занавеса и другие пользователи могут присоединиться? Проектирование баз данных

  • Группа имеет несколько функциональных возможностей, что каждый пользователь может получить доступ и работы с. Это не чат-группа. Это похоже на данные, которые каждый пользователь может добавлять/редактировать на основании своих привилегий.

  • Каждый пользователь может создавать или объединять столько групп, сколько ему нравится.

Мой вопрос - это лучший способ создать базу данных для такой задачи. Примеры похожих на то, что я хочу достичь существовать на живых сайтах, таких как: групп DeviantArt в, Trello, группы Facebook, LinkedIn страницах компании и т.д.

у меня есть два способа, которые звучат хорошо, но я могу пропустить что-то важное:

  1. Я думал, что одна база данных является наилучшим способом и создаст ассоциации с группами и пользователями. Этот способ, хотя делает меня думаю о производительности. Что произойдет, если/когда будет тысяч или даже миллионов пользователей и, возможно, больше групп. Будет ли база данных mysql обрабатывать все запросы и быстро реагировать?

  2. Другое предложение было сделано для меня, что я мог разделить каждую группу на разные таблицы. Поэтому, когда пользователь подключает запросы, которые будут выполняться , будет основываться только на группах, к которым он присоединился. Только до эти таблицы. При таком подходе я вижу базу данных, полную таблиц , которые позже не смогут управлять, так как больше групп получает .

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

Это приложение будет разработано в Laravel 5 с базой данных MySQL и угловая 2.

Спасибо заранее!
John,
Имейте приятный и творческий день!

ответ

0

Пользователь регистрируется, они могут создавать группы и следить за другими группами и добавлять элементы в группы.

пользователя Пример оформления таблицы:

id|email|username|password 

группы таблицы Пример проекта:

id|user_id|title|description 

user_id = человек, который создал группу.

Элементы Пример оформления таблицы:

id|user_id|title|content 

user_id = человек, который добавил пункт.

GroupUsers дизайн таблицы Пример:

id|group_id|user_id|role 

роль = администратор или модератор или последователя или что вы хотите, чтобы пользователь мог сделать для этой группы. У вас может быть один и тот же user_id, назначенный для многих group_id.

GroupItems стол Пример проекта:

id|group_id|item_id 

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

+0

эй Крис, исправьте меня, если я ошибаюсь. Единственная причина, по которой этот способ может привести к проблемам с производительностью, заключается в том, что серверы (серверы) с низким качеством? –

+0

@JohnBoulmetis Да, вы можете масштабировать его с помощью выделенного сервера базы данных и добавлять к нему кластеры по мере роста. Поговорите с вашим хостингом для получения более подробной информации или рекомендаций. – Chris