Дизайн базы данных. Нужно ли указывать идентификатор пользователя в качестве одного из полей во всех таблицах приложения со списком дел?

Я работаю над простым приложением для Rails под названием lists4me, чтобы создать минималистичное приложение для управления задачами и изучить Rails в придачу. Таблицы, которые я настроил, — это пользователи, категории, проекты, задачи и шаги. По сути, у пользователя много категорий, у категории много проектов, у проекта много задач, а у задачи много (действующих) шагов. В настоящее время поле user_id установлено в таблице категорий, но не в остальных таблицах.

Недавно я просматривал данные, которые публикуются с формы todoist.com, когда создаются новые задачи или проекты, и, похоже, также отправляется user_id. Поскольку я установил user_id только для таблицы категорий, это заставило меня задуматься, должны ли все мои таблицы также иметь user_id в качестве поля? Если да, то почему?


person walmik    schedule 05.04.2012    source источник


Ответы (1)


По сути, чтобы ответить на этот вопрос, я бы рассмотрел вопрос "Нужно ли мне когда-нибудь знать, какому пользователю принадлежит (проект | задача | шаг)?"

Если это никогда не будет проблемой, либо потому, что в этом нет необходимости, либо потому, что вы можете просто работать, присоединяя пользователей к (Проекты | Задачи | Шаги) через Категории, тогда вы будете в порядке без поля идентификатора пользователя в другие таблицы.

Однако, если вы собираетесь часто искать, скажем, все невыполненные задачи для данного пользователя, вероятно, было бы целесообразно добавить туда поле идентификатора пользователя, чтобы сохранить операции соединения, которые, если я правильно понимаю , не очень быстро.

person Nathan S.    schedule 05.04.2012
comment
Спасибо, что поставили вопрос с точки зрения получения незавершенных задач конкретного пользователя! Мне определенно нужно было сделать это рано или поздно. Я думаю, что все-таки добавлю user_id :) - person walmik; 05.04.2012
comment
Я бы определенно также рассмотрел то, что должен сказать @dbaseman, и не только потому, что его имя пользователя ссылается на базы данных. Он делает хорошее замечание, что я не ясно сформулировал избыточность информации в базе данных. - person Nathan S.; 05.04.2012