![]() |
|
Модераторы: Akina |
![]()
|
|
| Kosteles |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 7 Регистрация: 12.2.2008 Репутация: нет Всего: нет |
Добрый день!
В процессе создания базы данных потребовалась возможность обеспечения безопасности на уровне записей, не моглибы помоч разобраться со следующими вопросами: Позволяет ли MS SQL Server 2005 организовывать разграничение прав доступа для каждой записи таблицы? Или это только возможно с помощью отдельных программных модулей (например, через файл сервер)? Как считается лучше реализовать данное разграничение? Заранее благодарю. С уважением, Kosteles. |
|||
|
||||
| ТоляМБА |
|
||||
![]() Котэ ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1607 Регистрация: 15.12.2004 Репутация: нет Всего: 252 |
Вводишь новое поле ID_Sotrudn, записываешь туда например ID сотрудника вводившего запись.
Например у сотрудника Иванова будет 1, у Петрова 2 и т.д. Все сотрудники входят в базу под своим именем. К запросу на выборку, например
и всё - Иванов увидит только свои записи, естественно все последующие вводимые им данные пойдут с его айдишником. Как вариант разграничение по группам, если пользователей много |
||||
|
|||||
| SergKO |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 231 Регистрация: 14.3.2005 Репутация: 17 Всего: 20 |
Это вариант разграничения по сотрудникам. Если требуется разграничить по группам, то в поле ID_Sotrudn (точнее ID_Subdivision) надо будет занести идентификатор группы, к которой относится сотрудник Иванов. Тогда если Иванов перейдет в другой отдел, то он потеряет доступ к этой записи. Вообще это самый простой способ. Лучше иметь таблицу со списком сотрудников, таблицу групп, таблицу связи сотрудника с группой, и таблицу, в которой будет id записи и id группы или групп, которым разрешен доступ к записи. |
|||
|
||||
| SharedNoob |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 125 Регистрация: 25.6.2007 Где: UA Репутация: 2 Всего: 5 |
2SergKO
А вот если уж речь зашла о списке, я бы сделал древовидную структуру списка сотрудников, то есть верхний уровень, група, сотрудник. Далее имеем строковый код каждой позиции, тобиш Все = '1.', группа 1 '1.2.', пользователь группы 1 '1.2.3'. Ну а дальше использовать like @ID+'%'. |
|||
|
||||
| SergKO |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 231 Регистрация: 14.3.2005 Репутация: 17 Всего: 20 |
SharedNoob, дело вкуса. Но поищите по форумам сколько там вопросов связанных с работой с деревьями.
|
|||
|
||||
| SharedNoob |
|
||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 125 Регистрация: 25.6.2007 Где: UA Репутация: 2 Всего: 5 |
SergKO
Это все правильно, единственно что можно добавить что для полного комфорта в записи можно добавлять не ID_Sotrudn, а скажем некий уровень доступа, настройка для которого тоже будет в какой нибудь таблице аля (IDGroup int, AccessLevel int). Хотя я не оспариваю тот факт что наличие в записи информации о том кто и когда это запись добавил/изменил тоже является необходимостью для любой более ли менее серьезной БД. Ну а на счет дерева, дык для него просто нужно меньше всяческих надстроек, хотя и работать с ним менее удобно чем с джоинами на таблицы настроек. |
||||
|
|||||
![]()
|
| Правила форума "MS SQL" | |
|
|
Запрещается! Публиковать ссылки и обсуждать взлом чего бы то ни было.
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Zloxa, Akina. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | MS SQL Server | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |