![]() |
Модераторы: Akella |
![]() ![]() ![]() |
|
former |
|
|||
![]() MEMS Expert ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1166 Регистрация: 1.3.2006 Где: Россия Репутация: 1 Всего: 17 |
БД Firebird 2.0 для доступа к которой используются компоненты FIBPlus.
Предполагается три уровня доступа (три роли): администратор, редакторы и пользователи. В пустой БД одна таблица - "Типы устройств", редактировать которую могут только администратор и редактор. При добавлении записи в неё, создаются две таблицы: "Список изделий" и "Список параметров". В сою очередь, при добавлении записи в таблицу "Список изделий" создается ещё одна таблица "Характеристики". Вопрос заключается в следующем. Как автоматически (Без использования менеджеров типа IBExpert) предоставлять права на создание/удаление/редактирование для каждой группы при создании таблиц, а так же генераторов, процедур, триггеров и индексов? Т.е., например, таблица "Характеристики", созданная при добавлении записи одним редактором в таблицу "Список изделий", могла быть отредактирована или удалена другим редактором вместе со связанными с нею триггером, генератором, процедурой и индексом. Или, например, если аналогичное проделывает админ БД (не SYSDBA), то редакторы могли бы удалить. С клиент-серверными БД только начал работать. Посоветуйте, как грамотно организовать политику доступа и управления. -------------------- Достаточно снизить уровень мышления, чтобы иные почувствовали почву под ногами. |
|||
|
||||
Deniz |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1251 Регистрация: 16.10.2004 Где: Новый Уренгой Репутация: 22 Всего: 44 |
Создавать/удалять объекты БД(таблицы, триггеры, процедуры и т.д.) во время работы программы не хорошо.
Проектировать БД надо сразу. Раздача прав возможна на уровне БД grant/revoke, но если доступ к записи определяется из ее содержимого, то придется писать свою систему прав и анализировать это в бизнес логике. Логика может быть как на клиенте, так и на сервере, т.е. в хранимой процедуре. -------------------- "Для того чтобы сделать шаг вперед, достаточно пинка сзади" (с) |
|||
|
||||
former |
|
|||
![]() MEMS Expert ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1166 Регистрация: 1.3.2006 Где: Россия Репутация: 1 Всего: 17 |
Сам уже в этом убедился. Удобно конечно, но слишком много гемороя с правами. Я уже даже думал создать в базе таблицу пользователей и подключаться под именем администратора, а там уже наделять правами пользователей. Только вот наткнулся на такую же тему про пользователей. Дело ещё в том, что я пробовал создавать/удалять объекты БД(таблицы, триггеры, процедуры и т.д.) разными пользователями, но ошибка всегда ссылалась на отсутствие прав на удаление индекса, а таблицы удалялись нормально. Это сообщение отредактировал(а) former - 11.3.2008, 13:26 -------------------- Достаточно снизить уровень мышления, чтобы иные почувствовали почву под ногами. |
|||
|
||||
Deniz |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1251 Регистрация: 16.10.2004 Где: Новый Уренгой Репутация: 22 Всего: 44 |
Ты сам даешь пользователю права на select а уже в программе/ХП определяешь должна попадать запись к пользователю или нет. С insert/update/delete примерно тоже самое. Например, в триггере перед удалением проверяешь есть ли права у этого пользователя удалить эту запись, и если нет Exception. Все таки я склоняюсь к бизнес-логике на хранимых процедурах. -------------------- "Для того чтобы сделать шаг вперед, достаточно пинка сзади" (с) |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Interbase" | |
|
Обязательно указание: 1. Версию InterBase (Firebird, Yaffil) 2. Способа доступа (ADO, BDE, IBX и т.д.)
Если Вам понравилась атмосфера форума, заходите к нам чаще! С Уважением, Akella. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Firebird, Interbase | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |