Ваши критерии доступа кажутся довольно произвольными. Пользователь 1 получает 1001
, пользователь 2 получает 1002
, 1003
и 3000
, и я предполагаю, что пользователи с 3 по 99 также имеют произвольный доступ. В этом случае я рекомендую вам создать таблицу, назовите ее useraccess
для этого примера:
user |accessID
---------------
user1|1001
user2|1002
user2|1003
user2|3000
... |...
Теперь, когда вы хотите узнать, какие строки есть у пользователя, вы можете сделать это:
SELECT t.FromID, t.ToID, [[other columns you care about]]
FROM yourtable t
JOIN useraccess a ON t.FromID = a.accessID OR t.ToID = a.accessID
WHERE a.user = 'user2'
Вы можете выполнить этот запрос динамически или создать представление на его основе. Обычные компромиссы между представлениями и прямыми запросами будут применяться как обычно.
Редактировать: Я только что увидел ваше замечание, что у вас уже есть таблица UserRights
, поэтому вы уже выполнили шаг 1.