У меня интересный вопрос о дизайне. Я разрабатываю сторону безопасности нашего проекта, чтобы позволить нам иметь разные версии программы для разных затрат, а также чтобы пользователи типа менеджера могли предоставлять или запрещать доступ к частям программы другим пользователям. Он будет доступен через Интернет и размещен на наших серверах.
Я использую простой параметр «Разрешить» или «Запретить» для каждого «ресурса» или экрана.
У нас будет большое количество ресурсов, и пользователь сможет создать много разных групп, чтобы пользователи могли контролировать доступ. Каждый пользователь может принадлежать только к одной группе.
Я имею в виду два подхода к этому, и мне было любопытно, что будет лучше для сервера SQL с точки зрения производительности.
Вариант A
Наличие записи в таблице доступа означает, что доступ разрешен. Это не будет нуждаться в столбце в базе данных для хранения информации. Если результаты не возвращаются, доступ запрещен.
Я думаю, это будет означать меньшую таблицу, но будут ли запросы выполнять поиск по всей таблице, чтобы определить, что совпадений нет?
Вариант B
Битовый столбец включен в базу данных, которая управляет разрешить / запретить. Это будет означать, что результат всегда будет найден, и приведет к увеличению таблицы.
Мысли