Группы в Access или роли в Oracle?

fox_student
Дата: 05.12.2006 12:33:30
Поскажите, пожалуйста, новичку...
Есть база на Оракле и клиент на Аксессе. Надо организовывать безопасность через группы пользователей и конкретные права доступа для этих групп. Средства для этого есть и в Аксесс (группы) и в Оракле (роли). Как лучше(правильней?) сделать - в Оракле или средствами Аксесса?
barrabas
Дата: 05.12.2006 12:41:56
ИМХО на сервере нужно делать, т.к. клиент может быть переписан в будующем на что угодно в связи например с нежеланиме платить за лицензию акса или нужно будет дополнительно веб интерфейс присабачивать.
_____________________________________
Мое конг-фу сильнее твоего
barrabas
Дата: 05.12.2006 12:56:21
можно сделать подругому (неиспользуя роли в оракле), сделать таблицы: пользователи, привелегиипользователей на ..., и во всех вьюхах поставить пересечение с этими таблицами, таким образом пользователь удет видеть только то что ему разрешено и еще плюс в комбобоксах выбора отчетов по БЕ и операциям пользователь тоже будет видеть только разрешенные ему БЕ и операции (и по идее даже может не знать о существовании других).
fox_student
Дата: 05.12.2006 17:11:53
Спасибо за разъяснение, Barrabas.
А можно поподробней "во всех вьюхах поставить пересечение с этими таблицами" - это как? В Оракле? И что такое "БЕ", поясните, пожалуйста.
Что-то типа второго варианта уже реализовано, есть таблица пользователей, в кот. забиты их привилегии, и есть таблица, "что доступно по меню текущему пользователю", формируется исходя из привелегий пользователя....
Но задача именно сделать все через группы или роли. Я теперь конфликтов боюсь...
Hummer
Дата: 05.12.2006 17:32:54
2 barrabas
Т.е. ваш механизм лучше ролей в Оракле?:)
Это к тому, что не нужно изобретать велосипед, он уже давно изобретён.
barrabas
Дата: 05.12.2006 17:42:59
Hummer
2 barrabas
Т.е. ваш механизм лучше ролей в Оракле?:)
Это к тому, что не нужно изобретать велосипед, он уже давно изобретён.

БЕ - балансовая единица :)

1. Он не мой, я пришол на работу так было реализованно во время проектирования БД, но я вник и согласен что это круто
2. К ролям он отношения не имеет, т.е. ролью ты можешь назначить права на просмотр вьюхи для пользователя, но ты не сможешь сделать так чтобы каждый пользователь видел в этой вьюхе только те данне которые ему разрешены.
barrabas
Дата: 05.12.2006 17:43:51
домой приду распишу поподробнее, пошел я
_____________________________________
Мое конг-фу сильнее твоего
barrabas
Дата: 05.12.2006 18:50:39
ORDERS
BEOPERQTYTOVAR
Склад Пиваприход5Мельник
Склад Пиварасход1Мельник
Склад Пиваприход7Клинское
Склад Водкиприход3Путинка
Склад Водкиприход1Топаз


PRIVIL_USER_ON_BE
USERBE
ТолянСклад Пива
ТолянСклад Водки
КолянСклад Водки


PRIVIL_USER_ON_OPER
USEROPER
ТолянПриход
КолянПриход
КолянРасход


Select o.BE,o.OPER,o.QTY,o.TOVAR
  from ORDERS O,PRIVIL_USER_ON_BE B, PRIVIL_USER_ON_OPER P
 where B.user = GET_USER()
   and P.user = GET_USER()
   and O.BE=B.BE and O.OPER = P.OPER 
если смотрит колян, то он увидит только
BEOPERQTYTOVAR
Склад Водкиприход3Путинка
Склад Водкиприход1Топаз

если смотрит Толян, то он увидит только
BEOPERQTYTOVAR
Склад Пиваприход5Мельник
Склад Пиваприход7Клинское
Склад Водкиприход3Путинка
Склад Водкиприход1Топаз


Еще можно сделать таблицу с настройками, где для пользователей будут хранится всякие текущие даты, БЕ и т.д., чтобы пользователь при открытии формы возвращался к тем данным на которых закончил работу
fox_student
Дата: 05.12.2006 21:19:57
Barrabas, подход и правда интересный. А можно его как-то совместить с группами? Т.е. у меня 100 штук пользователей и им нужно предоставлять определенные права на некоторые таблицы, формы, отчеты и т.д. Если добавить таблицу: Пользователь,Роль и поставить роли: ввод, просмотр, например, а потом в Ваши таблицы вместо пользователей поставить роли, то получим, что каждый пользователь видит только те данные в таблице, на которые у его Роли есть разрешения на просмотр?

Select o.BE,o.OPER,o.QTY,o.TOVAR
from ORDERS O,PRIVIL_USER_ON_BE B, PRIVIL_USER_ON_OPER P, TBL_GROUPS_USERS G
where
G.group = GET_USER()
and B.group=G.group
and P.group=G.group
and O.BE=B.BE and O.OPER = P.OPER
Так?
barrabas
Дата: 05.12.2006 22:14:53
Это был пример.
Конечно нужно делать группы и включать в них пользователей