172 похожих чатов

Нужна помощь в проектировании: в системе есть несколько ролей пользователей - менеджеры -

бригадиры
- транспортники
- и всякие другие

Есть документы, изменять которые могут лишь некоторые роли (к примеру Менеджеры и Бригадиры)
Как на уровне схемы развязать такое ограничение, чтобы в таблице Документы user_Id содержал ссылки только на эти 2 группы и при этом Из таблицы Документы можно было бы однозначно понять пользователь какой роли изменил запись?

37 ответов

10 просмотров

у вас в вопросе есть такой подвопрос. в постргресе есть права, в том числе на доступ к таблицам и строкам от определённого юзера. То есть можно сделать таблицу и настроить права так, чтобы одни строки могли только читать или читать и изменять только менеджеры, а другие бригадиры и так далее. И если это учебная задача, то конечно это и спрашивают. Но если это реально приложение, то конечно решается на уровне СП с одним подключением в софте пишете ту логику, которая вам нужна, добавляете два поля дата и кто добавлял, изменял запись, делаете логику в приложении в каждом запросе кто и как может это всё менять.

ks
у вас в вопросе есть такой подвопрос. в постргресе...

Вы немного не в ту сторону пошли - мне не нужна row level security мне на уровне схемы данных нужно сделать связь с ролями пользователей (тупа поставить ссылки на 2 таблицы с поля user_id не проблема) но как-то криво оно выгдядит - нужно еще мостыки городить типа добавить поле роль юзера Я думал есть какие-то типовые развязки таких ситуаций на уровне схем данных

https://wiki.postgresql.org/wiki/Don't_Do_This#Don.27t_use_serial вам нужно 2 таблицы, это сотрудники, и должности, все, зачем на каждую должность делать таблицу? это дичь какая то

Владимир
https://wiki.postgresql.org/wiki/Don't_Do_This#Don...

А по существу вопроса есть что-нибудь?

Владимир
https://wiki.postgresql.org/wiki/Don't_Do_This#Don...

Сотрудники в реальной а не в идеальной жизни к сожалению могут существовать в нескольких ипостасях

Бред, сотрудник + роль должно быть

central hardware
Бред, сотрудник + роль должно быть

я уже писал выше сотрудник+должность ну или +штатная единица когда менеджер+уборщик+крановщик :)

Владимир
я уже писал выше сотрудник+должность ну или +штатн...

И как это решит проблемы подмены сотрудников в экстренных ситуациях?

Вадим Бударин Бударин
И как это решит проблемы подмены сотрудников в экс...

назначается сотруднику дополнительная роль на период подмены

Вадим Бударин Бударин
Вот и появляется у сотрудника 2 роли

как и в реальной жизни, насколько понятно из вашего описания бизнес-процесса

Sergey Bezrukov
Таблица "занимаемая должность": id user_id positio...

пройдите в бухгалтерию, распишитесь в ведомости :)

Владимир
я уже писал выше сотрудник+должность ну или +штатн...

Имея ссылку на сотрудника каким образом я могу понять от имени какой роли он сейчас выступает?

Ivan KHOKHLOV
как и в реальной жизни, насколько понятно из вашег...

Ссылка на таблицу Сотрудники никак не говорит о том какую роль сотрудник исполняет при наличии у него более 1й активной роли и не ограничивает

Вадим Бударин Бударин
Ссылка на таблицу Сотрудники никак не говорит о то...

да, поэтому делают в кадрах штатную единицу, человека привязывают к ставке и все это азы кадрового учета

Вадим Бударин Бударин
Ссылка на таблицу Сотрудники никак не говорит о то...

непонятно в вашем бизнес-процессе, какое у вас подразумевается отношение сотрудник-роль один ко многим или один к одному

Alexey Bulgakov
один ко многим очевидно

И мне так кажется, но человек, как будто намекает на другое. Поэтому я его и не понимаю

Ivan KHOKHLOV
непонятно в вашем бизнес-процессе, какое у вас под...

один сотрыдник одновременно исполнять несколько ролей

Alexey Bulgakov
его никто не понимают

я думаю Колумб переоткрывает кадровый учет.

Владимир
я думаю Колумб переоткрывает кадровый учет.

Непонятно, вроде стандартная задача. О чем, вообще, обсуждение

Не понял, зачем вы проектируете именно так. Под каждую роль не нужна отдельная таблица. Должна быть таблица прав, таблица ролей, таблица связи прав и ролей, а также таблица связи юзеров и ролей (там же можно хранить id юзера, который добавлял/менял эту связь - правда тут надо чуть подумать, т.к. с того времени роль у этого человека могла смениться)

Dmitriy Sviridov
Не понял, зачем вы проектируете именно так. Под ка...

ещё не забывайте надо учесть, что у человека меняются права со временем. То есть нужен лог истории, отдельная таблица, в нём пишет у кого какие права назначали, снимали. Ну замещение должности. Это всё решается на уровне сервера приложений в коде. Я удивлён, что это делают на уровне баз данных. И так как это реальный софт, логика будет достаточно запутанной.

ks
ещё не забывайте надо учесть, что у человека меняю...

вы хранить информацию будете в сервере приложений? это как раз типичная задача для БД, причем уже расписанная вдоль и поперек, выберите просто ваш вариант и все

Владимир
вы хранить информацию будете в сервере приложений?...

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

Владимир
а кто-то про кнопки говорил?

а думаете они прямо в базе будут? Ну менеджеры, бригадиры?

Похожие вопросы

Обсуждают сегодня

А как старый хаскел с новым стыковать ? потому как тут работает https://play.haskell.org/saved/C3xpMzcd, а вот тут https://stepik.org/lesson/7602/step/9?unit=1473 нет ошибка C...
Fedor
131
что насчет пагинга? на осдеве непонятно(
Vi Chapmann 🪙
26
Вопрос я правильно понимаю что в коде newtype ArrowMap k v = ArrowMap { getArrowMap :: k -> Maybe v } getArrowMap есть функция типа k -> Maybe v, если да, то не понимаю задач...
Fedor
64
Ребят, что лучше для реверса: гидра или ида?
En Vind Av Sorg
26
Делаю велосипед логгер. К сообщению хочу прикрутить некоторую информацию, типа, кем отправлено, какой уровень, и всякое такое. И тут подумалось мне, почему бы не хранить весь...
Serjone
24
Как Вы считаете нормально ли в двадцатых годах 21 века в ВУЗах Российской Федерации обучать студентов работе с TASM? Не слишком ли это "архаично"? (Если оффтоп или флейм для э...
Spiker01
52
Всем привет! Использую gitlab-ci. Настроил gitlab-agent для деплоя в куб. При деплое проекта в логах такая ошибка: Executing deploy plan failed to watch "ns:my-project/Ingress...
Konstantin Moiseev
4
Комрады, хотел уточнить. Проперть в OnDestroy юнита-хозяина по-прежнему доступна? И еще уточнение: finalization юнита наступает раньше или позже OnDestroy?
Ed Doc
48
Продолжая диалог про свифт в проде – сейчас возник вопрос в активном наборе бекендеров. В основном в нашей компании мы фанаты Java Spring и полностью ей довольны. Однако найм ...
Guseyn
27
если загрузчик efi? если сама PML4 PDPT PDT PT лежит в неудобном для меня месте?
Vi Chapmann 🪙
8
Карта сайта