Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Фильтрация данных на основе иерархической классификации. / 15 сообщений из 15, страница 1 из 1
25.05.2005, 17:11
    #33083912
Easygoing
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Фильтрация данных на основе иерархической классификации.
Доброго дня. Имеется центральная БД с которой работает n, нет n - мало, m филиалов. В настоящий момент фильтрация данных разрешенных им для просмотра организуется по признаку региональной принадлежности клиентов с которыми они работают. Плюс к этому каждый юзер может получить от администратора системы разрешения на просмотр конкретного клиента, или на группу клиентов сгруппированных по определенному признаку. Организовано это дело в виде табличной функии выцыпляющей из параметров подключения юзера из него его филиал и далее по всем критериям клиентов. Работает это безобразие с довольно приемлемой скоростью. Но вот возникла задача классификации клиентов по иерархическому принципу и в соответствии с этой иерархией выдавать разрешения на просмотр. Типа: клиенты из Тюмени, относящиеся к химической промышленности, с улицы Ленина, с годовым оборотом от m куе в год и т.д. Причем разрешения могут быть выданы на любом уровне иерархии. Меня терзают подозрения, что online это будет счетаться ох как не быстро, возникает идея, а что если при входе юзера в систему сразу расчитывать всех разрешенных ему клиентов и хранить их в БД до окончания работы с приложением, что скажите?
...
Рейтинг: 0 / 0
25.05.2005, 17:50
    #33083993
Estets
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Фильтрация данных на основе иерархической классификации.
1) Если надо видеть нового клиента, без перегрузки приложения то допуска определяются в момент внесения клиента (изменении старого).
2) Если не обязательно то в момент входя в систему.
3) Если совсем не критично то ночью для всех.
4) Если допуска к новым клиентам определяются администратором, то по кнопке у администратора.

Либо комбинация из этих пунктов, выбирайте...
...
Рейтинг: 0 / 0
25.05.2005, 18:01
    #33084017
rcryo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Фильтрация данных на основе иерархической классификации.
предлагаю расчитывать на входе не всех клиентов, а записи классификатора, которым соответствуют разрешенные клиенты, тогда если разрешения будут выдаваться только для классификатора, то первое ограничение частично отпадет, перегружаться надо будет только если изменились данные в классификаторе (что происходит значительно реже).
...
Рейтинг: 0 / 0
26.05.2005, 02:32
    #33084307
Mainframe
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Фильтрация данных на основе иерархической классификации.
rcryoпредлагаю расчитывать на входе не всех клиентов, а записи классификатора, которым соответствуют разрешенные клиенты, тогда если разрешения будут выдаваться только для классификатора, то первое ограничение частично отпадет, перегружаться надо будет только если изменились данные в классификаторе (что происходит значительно реже).
из личного опыта. В своей системе управления правами - правила назначения хранятся в одних таблицах, на этих таблицах стоят триггеры, которые при изменении правил генерируют в другую - результирующую таблицу истинные права конкретного пользователя. Она, конечно, довольно большая, но все же искать в ней быстрее, чем генерировать на лету.
...
Рейтинг: 0 / 0
26.05.2005, 11:10
    #33084701
LSV
LSV
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Фильтрация данных на основе иерархической классификации.
К древесной таблице надо иметь доп.таблицу (два поля ID, ParentID) с перечислением всех пар комбинаций пути от листьев до корня дерева.
Тогда выбирая произвольный элемент дерева и объединяя его с этой таблицей получите ВСЕХ ПОТОМКОВ ЭТОГО УЗЛА в т.ч. и этот узел. Доп.таблица будет очень длинной но узкой. Рулить её можно триггерами. Скорость выборок будет вполне приличная. Очень удобно делать отчёты.
...
Рейтинг: 0 / 0
26.05.2005, 12:06
    #33084854
rcryo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Фильтрация данных на основе иерархической классификации.
автор результирующую таблицу истинные права конкретного пользователяесли я правильно понял, то в этой таблице КоличествоЗаписей=КоличествоЮзеров*Сумма(КоличествоЗаписейВоВсехТаблицахБДНаКоторыеРаздаютсяПрава) ?
...
Рейтинг: 0 / 0
26.05.2005, 13:05
    #33085037
PVP
PVP
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Фильтрация данных на основе иерархической классификации.
Проблема снимается изменением в методе организации защиты. Постановка задачи - защита к каждой записи - это перебор.

Записи из таблиц в серьезной системе не выбираются на экран все под ряд.
Обычно есть некоторый фактор, по которому они фильтруются. В данном случае – это подразделения.
Допустим, нет ни какой защиты, и мы выбираем записи, относящиеся к Тюмени. Тогда каким то образом выбирается значение «Тюмень» из фактора подразделений, который очевидно является деревом. Это значение служит фильтром для отображения записей на экране (или вывода из в отчет). Система умеет использовать это значение для фильтрации. Она выдаст в результате набор записей, соответствующий «Тюмени». Еще раз отметим, что нет ни какой защиты, но система выдает указанный набор записей.

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

Так организована защита в БАС . Есть набор ролей пользователей, есть таблица доступа ролей к факторам учета. Подключить пользователя к массиву записей – проставить «птичку» для его роли напротив заданной ветки фактора учета. Ни каких дополнительных таблиц. Все делается мгновенно.
...
Рейтинг: 0 / 0
26.05.2005, 13:16
    #33085076
Easygoing
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Фильтрация данных на основе иерархической классификации.
Если я понимаю Вас правильно, то речь идет об организации секурити на уровне GUI, но ведь есть такая вещь, как QA и что тогда ?
...
Рейтинг: 0 / 0
26.05.2005, 13:18
    #33085080
PVP
PVP
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Фильтрация данных на основе иерархической классификации.
EasygoingЕсли я понимаю Вас правильно, то речь идет об организации секурити на уровне GUI, но ведь есть такая вещь, как QA и что тогда ?А можно расшифровать GUI и QA?
...
Рейтинг: 0 / 0
26.05.2005, 13:20
    #33085087
Easygoing
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Фильтрация данных на основе иерархической классификации.
GUI - Graphic user interface
QA - Query Analizer
...
Рейтинг: 0 / 0
26.05.2005, 13:24
    #33085104
PVP
PVP
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Фильтрация данных на основе иерархической классификации.
EasygoingGUI - Graphic user interfaceДа речь идет об обычных пользователях, которые работают из интерфейса.
EasygoingGUI QA - Query AnalizerА разве есть шансы защитить участки записей от программистов, которых пустили в базу данных из QA?
(Я работаю c MS SQL).
...
Рейтинг: 0 / 0
26.05.2005, 13:47
    #33085179
Easygoing
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Фильтрация данных на основе иерархической классификации.
Тут не только о программистах речь идет, у Вас ведь юзеры имеют логины на сервере, так? Соответственно они имеют возможность выполнять запросы к нему и соответственно вне интерфейса могут выполнять запросы с любыми параметрами.
...
Рейтинг: 0 / 0
26.05.2005, 14:06
    #33085252
PVP
PVP
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Фильтрация данных на основе иерархической классификации.
EasygoingТут не только о программистах речь идет, у Вас ведь юзеры имеют логины на сервере, так? Соответственно они имеют возможность выполнять запросы к нему и соответственно вне интерфейса могут выполнять запросы с любыми параметрами.Все пользователи входят в систему со своих клиентских рабочих мест. Если это не программисты, то на ихних компьютерах есть только один путь подключиться к базе - запустить приложение, т.е. добраться только через интерфейс.

Если пользователю на клиентской машине устанавливается инструментарий программиста или администратора БД, и этот юзер умеет им пользоваться, то его можно образно назвать "программистом". От юзера с такими вомозможностями, если его уже пустили в базу данных, защитить отдельные участки таблицы можно только теоретически.
...
Рейтинг: 0 / 0
26.05.2005, 17:32
    #33085896
guest_20040621
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Фильтрация данных на основе иерархической классификации.
> В настоящий момент фильтрация данных разрешенных им для просмотра
> организуется по признаку региональной принадлежности клиентов с которыми
> они работают.

А нормальный access control чем не подошел?
...
Рейтинг: 0 / 0
26.05.2005, 17:38
    #33085911
Estets
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Фильтрация данных на основе иерархической классификации.
PVPЕсли пользователю на клиентской машине устанавливается инструментарий программиста или администратора БД, и этот юзер умеет им пользоваться, то его можно образно назвать "программистом". От юзера с такими вомозможностями, если его уже пустили в базу данных, защитить отдельные участки таблицы можно только теоретически.
Не скажите, например организовав доступ к данным через процедуры и запретив всем кроме DBO просмотр таблиц. А внутри процедуры можно запрещать доступ построчно, либо даже колонками забивая null защищенные поля.
...
Рейтинг: 0 / 0
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Фильтрация данных на основе иерархической классификации. / 15 сообщений из 15, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]