Closed Leerv474 closed 4 days ago
Как уже писал в описании, решил сделать доступ пользователям. Добавил связующую таблицу. В Концептуальной схеме поменял стрелку на многие ко многим.
Вопрос: стоит ли мне вывести уровни разрешений - permission_level
в отдельную таблицу или это уже слишком? Я вижу выгоду, потому что тогда у меня могут быть только такие то уровни доступа (редактор, зритель, и еще можно расширить) и проверка будет тогда внутри базы данных. Вроде есть польза, а вроде и без этого хорошо.
такие штуки, как разрешения, как правило, достаточно жесткие, так как они глубоко прошиты в логику приложения и интерфейсы. Поэтому, если их изначально немного, то их хардкодят. Если потенциально возможно расширение, то да, отправляют справочником в БД. Оценивай!
по целостности - может ли задача, принадлежащая проекту, относится к одной статус-таблице, а проект к другой?
проект содержится в списке проектов, его задачи выгружаются в основные статус таблицы. Если все задачи проекта закончены, то сам проект переносится в выполнено, а его задачи скрываются, чтобы не заполонять список уже не первостепенной информацией.
Первый приоритет трекинга задач - это односложные задачи. Проекты существуют для группировки задач, ведущих к какому-то частному результату. Статус таблицы существуют, чтобы группировать задачи по собственно статуса выполнения
а прямой ответ на вопрос дать не? ))
да, может
поменял логическую схему. решил все таки добавить роли для расширяемости проекта в целом (это же поддерживается со стороны проектирования приложений, верно?) теперь новая таблица содержит все роли, содержит числовое значение уровня доступа, описание (для четкого описания возможностей роли) и access_status
, для случаев, когда необходимо отключить роль на некоторое время.
добавил роли в физическую схему и описание. изменил пользователя: теперь у пользователя все таки есть id и почта. Логин поменял на просто имя пользователя, которое можно будет редактировать
ER-Диаграммы
Логическая схема
Физическая схема
Описание целостности данных
Пользователь:
Доска:
название: тип данных — VARCHAR(127), не должно быть пустым.
Роль:
Статус-таблица:
Проект:
срок: тип данных — DATE.
Задача: