Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Администрирование [D7, MSSQL]


Начинающий10 ©   (2006-02-28 09:44:00) 

Господа программисты и им сочувствующие, поделитесь соображениями или опытом.
Собственно преамбула. Сделал не так давно программный комплекс на базе СУБД MSSQL который помимо прочего обеспечивал занесение, хранение и т.д. ретроспективной информации в следующих таблицах:
родительская, заточенная под DBTreeView, является в моем случаи хранилищем элементов оборудования;
дочерние таблицы (бланки), содержат, соответственно, описания элементов оборудования.
Ну и табличка с пользователями для примитивного администрирования на уровне бланка в целом (видимость, редактирование).
В общем типовая задачка :)
Все чудненько работает, но в последние время все настойчивее склоняют к более «глубокому» администрированию, а именно - редактирование, видимость и т.д. вплоть до записи в бланке и столбца бланка.  
Реализовал желание созданием дополнительного поля в родительской таблице в которое записывается объектик. Объектик, на каждую запись соответственно, содержит всю информацию о бланках > записях об элементе > столбцах > конкретном пользователе, и реализован на основе вложенных TCollection. Короче жуткий монстр и жрет достаточно много.  
Собственно не нравиться мне ента реализация, а другой придумать не могу :(. Поделитесь соображениями или опытом, возможно есть более простые и элегантные способы достигнуть результата (без использования средств СУБД). Спасибо.


Petr V. Abramov   (2006-02-28 21:50:00) [1]

> редактирование, видимость и т.д. вплоть до записи в бланке и столбца бланка.  
 Это как? половину бланка видно, половину - нет???
Может, не "склоняться", а за отдельные деньги продумать политику администрирования?


Начинающий10   (2006-02-28 10:49:00) [2]

>[4] Оставлю на сладкое :)
>[3] Гениально. В смысле раньше не приходило в голову уникально обзывать записи и столбцы вне таблиц. Правда размерчек у этой таблицы будет :)    
Спасибочки.


MOA   (2006-02-28 10:22:00) [3]

>администратор ничего не должен знать и не уметь пользоваться утилитами СУБД
Для управления системой безопсности в MSSQL используются команды и процедуры самого MSSQL (не утилиты), т.е. админ может и не уметь, если написать для него соответствующую оболочку этих команд ;)
Посмотрите в BOL про GRANT, REVOKE, sp_addrole и по ссылкам с них.
Требование 3-й усиленной формы обусловлено тем, что в этом случае права можно назначить более детально  - конечно, механизмы безопасности сервера работают безотносительно к уровню нормализации.
Удачи!


clickmaker   (2006-02-28 10:16:00) [4]

создать что-то типа ACL
ACL_ID  User_ID Object_ID Rigths
где Object_ID либо таблица, либо запись, либо столбец
Rights - набор флагов (н-р, 1 - читать, 2 - писать, 4 - удалять, 0 или отсутствие записи - нет доступа)
в качестве Object_ID могут выступать и id из sysobjects и syscolumns для упрощения. Редактируется этот acl с самописного клиента, юзер в сиквельную секьюрити не лезет


Начинающий10   (2006-02-28 10:05:00) [5]

Собственно пожеланием было редактирование прав из дополнительной «программки» комплекса, то есть их администратор ничего не должен знать и не уметь пользоваться утилитами СУБД. Хотя я может что-то не понимаю, так как сам недавно переработал комплекс с Paradox на MSSQL без использования всяких прибомбасов.


MOA   (2006-02-28 09:50:00) [6]

1. Нормализовать Вашу базу минимум до 3-й усиленной нормальной формы.
Как только это будет сделано - Вы сможете воспользоваться механизмами безопасности MSSQL - ролями, правами на объекты.
Удачи!


Наверх

Титульная страница Поиск, карта сайта Написать письмо