Как получить доступ к конкретным данным, которые связаны с пользователем после входа в систему - PullRequest
0 голосов
/ 05 апреля 2019

Я создал базу данных с 6 таблицами и имею их 15 раз по другой схеме.Каждая схема, представляющая кампус / школу.

Задача, которую мне нужно выполнить, - создать учетную запись, и после входа в систему пользователя / учителя должны отображаться только учащиеся и информация, связанная с пользователем / учителем.

Я могу создать базовую учетную запись приложения UWP, которая сравнивает имя пользователя и пароль из базы данных SQL.

Мне просто нужны инструкции о том, как мне нужно подходить к этому, чтобы получать только информацию о вошедших в систему пользователях.

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

1 Ответ

0 голосов
/ 05 апреля 2019

Вы понимаете, что такой подход может быть проблематичным, но давайте все равно поработаем с ним.В базе данных каждый объект принадлежит схеме - правильно?Часто вы пишете запросы типа

select col1 ... from orders order by ...;

. Какая таблица на самом деле используется для удовлетворения этого запроса?Вы, вероятно, узнали о схеме dbo, потому что она существует в каждой базе данных.Если вы ссылаетесь на таблицу только по имени, ядро ​​базы данных должно найти фактическую таблицу, которая будет использоваться.Сначала он будет смотреть в текущей схеме по умолчанию пользователя, чтобы увидеть, существует ли эта таблица.Если это так, то эта таблица используется.Если нет, движок будет искать в таблице dbo эту таблицу.

Зная это, вы можете написать свои запросы, чтобы воспользоваться этой логикой.Обратите внимание, «может» - это не рекомендация, но она будет соответствовать вашей цели.Если вы пишете свои запросы, используя имена из одной части, все эти имена будут относиться к схеме по умолчанию текущего пользователя во время выполнения.

Итак, предположим, что пользователь X имеет схему по умолчанию Z. Ваше приложение пытается выполнить запрос "выбрать * из порядка заказов по orderDate desc;".Таблица Z.orders будет использоваться в качестве источника, если он присутствует.Если эта таблица не существует в схеме Z, механизм будет использовать dbo.Orders.И если эта таблица не существует, будет сгенерирована ошибка.

Так это работает с любой платформой, которую вы используете в своем приложении?Не знаюОбратите внимание, что вы пишете заявку.Все это вы можете сделать в своем собственном письменном коде.И если вы можете динамически добавлять имя схемы к своим запросам, вы также можете делать все что угодно, чтобы «настроить» результаты по любой причине.Все просто - это всего лишь код, так что делайте что хотите.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...