Я собираюсь создать простое веб-приложение для управления проектами, подобное Trello App.
Моя база данных будет содержать:
- Пользователь
- Проект
- Категория (Для категоризации задачи)
- Задание (включает много подзадач, комментарий, вложение)
- подзадачи
- Приложение
- Комментарий
- Уведомление (Уведомление пользователей, когда что-то изменилось, связанные с ними)
- Активность (для отображения всех действий, выполненных пользователями для задачи)
Таблица уведомлений, в которой хранится информация, когда кто-то вносит изменения во что-либо, связанное с пользователем, например:
- перемещено задание из категории в другую категорию
- прокомментировал задачу
- прикрепил файл к задаче
- ...
А в таблице Activity хранятся журналы, такие как таблица уведомлений, но только связанные с задачей:
- перемещенное задание
- комментарий
- добавить / удалить подзадачу
- Отметить подзадачу выполненной / неполной
- ...
Моя идея создать таблицу уведомлений (Таблица активности немного отличается):
- ID
- тип (MOVED_TASK, COMMENT, ATTACHMENT, ADD_REMOVE, ...)
- TaskId
- fromCategoryId
- toCategoryId
- CommentID
- 1064 * вложения *
- CreatedBy
- createdDate
Когда я проверяю запись Уведомления, я переключаю атрибут 'type' регистра, чтобы создать подходящий контент для уведомления.
Пример: если type равен 'MOVED_TASK', то хранилище записей fromCategoryId, toCategoryId и commentId, attachmentId будет нулевым.
Затем я создаю уведомление «Задача ... была перемещена из Category_A в Category_B пользователем_X в Time_Y.
Это хорошо?
Мне нужно лучшее решение, чем хранится много нулевого значения в дБ.
Обновлено: мое решение.