powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Помогите спроектировать систему распределения доступа
4 сообщений из 4, страница 1 из 1
Помогите спроектировать систему распределения доступа
    #35391132
rockclimber
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть следующие сущнности:
филиал
сотрудник
клиент

Каждый клиент закреплен за одним филиалом. Каждый сотрудник работает на одном из филиалов.

Есть принципы доступа:
каждого клиента должен видеть один сотрудников
каждого клиента при необходимости могут видеть несколько сотрудников
за каждым клиентом должен быть закреплен ответственный сотрудник
за работу со всеми клиентами филиала отвечает один из сотрудников (начальник)
Каждый клиент входит в одну из групп по жестко заданному принципу
Клиенты могут временно объединяться в особую группу (пул) по произвольному признаку.

Дальше начинается самое интересное.

Первое, что пришло в голову:
1. По каждому клиенту делаем запись - филиал, сотрудник, группа, пул
2. Создаем таблицу доступа, определяющую доступ, делаем в ней поля: логин сотрудника, филиал, группа, пул.

Дальше строим список клиентов для каждого сотрудника запросом:
select <поля> from клиенты, таблица_доступа
where (клиенты.филиал = таблица_доступа.филиал and клиенты.группа = таблица_доступа.группа)
or клиенты.пул = таблица_доступа.пул and таблица_доступа.логин = <логин сотрудника>

Проблема в чем: если запрос писать так, то все сотрудники будут видеть всех клиентов филиала, а если добавить в запрос логин, то нельзя сделать доступ к одному клиенту двум сотрудникам (пул для этого использовать нельзя).

Возможные варианты решения:
1. В таблице доступа делать записи не по филиалам/группам, а по клиентам/группам. Тогда можно для клиента сделать две записи, и его увидят два человека.
Минус - филиалов 15, а клиентов 25000, с вытекающими последствиями.
Плюсы - что-то мне подсказывает, что это более верное решение.
2. Видимо, если не использовать первый способ, придется сильно извратиться. Я даже не придумал пока, как...
3. Здесь могла бы быть ваша реклама ;)
...
Рейтинг: 0 / 0
Помогите спроектировать систему распределения доступа
    #35391933
SQL*Plus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rockclimber3. Здесь могла бы быть ваша реклама ;)За умеренную плату выполним проектирование схемы данных вашей системы.
Дадим все необходимые пояснения и разъяснения, напишем всю серверную часть для RDBMS Oracle.
Будете довольны и счастливы! :-)
...
Рейтинг: 0 / 0
Помогите спроектировать систему распределения доступа
    #35394239
474
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У вас два множества - клиенты и сотрудники.
Введите третье - их пересечение, так как не имеет смысла привязывать к сущности "клиент" информацию для обспечения доступа.
В самом простом случае, пересечение это таблица двумя полями - ID клиента и ID сотрудника, который имеет доступ к информации о клиенте.
В третьей таблице количество записей будет (максимум) произведением записей двух исходных таблиц, ну и что?
...
Рейтинг: 0 / 0
Помогите спроектировать систему распределения доступа
    #35401773
rockclimber
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я остановился на таком варианте:
по каждому клиенту есть три поля - филиал, группа, логин сотрудника.
В таблице доступа есть логин сотрудника и такие же три поля. В запросе сравниваю три поля оттуда и три оттуда - если совпали, клиент попадает в список.
Для каждого клиента мне доступ прописывать не хочется, потому что будет сложнее уследить и в голове удержать, да и не нужно это... Все равно, специфика работы такова, что один сотрудник будет работать с парой сотен клиентов минимум. Так что и доступ буду давать пачками...
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Помогите спроектировать систему распределения доступа
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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