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

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

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

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

37 ответов

25 просмотров

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

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
ещё не забывайте надо учесть, что у человека меняю...

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

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

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

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

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

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

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

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта