2016-12-07 7 views
0

Объяснение: В настоящее время у меня есть база данных из тысяч задач и несколько сотен человек, которые могут видеть эти задачи. У каждого пользователя есть свой логин, но все они видят один и тот же список задач, и все они должны выполнить все эти задачи.Сценарий управления задачами (1 база задач задач, которые все пользователи должны выполнить отдельно)?

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

В настоящее время у меня есть: 1 таблица задач и описаний, 1 таблица пользователей, 1 таблица обсуждений по каждой задаче. Пользователи могут входить в систему и просматривать все задачи, но не могут их пометить.

Я не уверен, что я достаточно хорошо объясняю это, но я просто ищу информацию о том, как лучше всего начать с этого, так как я как бы ударил кирпичную стену и нуждаюсь в людях умнее меня, чтобы дать их понимание :)

Спасибо вам заблаговременно за ваши комментарии.

ответ

0

Вам нужна еще одна таблица, в которой содержатся отношения между пользователями и задачей. Каждый раз, когда пользователь завершает задачу, сделать запись в эту таблицу:

idx task_id user_id 
    1  1  3 
    2  4  3 
    3  1  5 ... 

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

+0

Спасибо, это кажется вариантом, хотя я беспокоюсь о миллионах записей, которые могут быть созданы за несколько лет использования при добавлении новых людей. Любые мысли о массиве какого-то типа в пределах значения таблицы, которое содержит все завершенные задачи? –

+0

Это, в основном, пара ключ-значение, если речь идет об объеме, есть несколько способов обойти это, например, использовать хранилище с ключом, такое как HBase. Хотя я сомневаюсь, что таблица в миллионах строк может быть слишком большой проблемой для большинства РСУБД. Написание массива с помощью task_id, пары user_id и его обновление было бы намного более дорогостоящей транзакцией, чем добавление к таблице отношений. Вы можете добавить столбец даты/времени, а затем использовать это для истечения срока действия данных. – PabTorre

+1

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