Как построить разрешения для зарегистрированного пользователя? - PullRequest
0 голосов
/ 22 мая 2018

У меня есть система, которая имеет разные уровни для пользователей, зависит от того, что назначено для их учетной записи.Таким образом, существует четыре различных уровня 1,2,3 и 4. Первый уровень имеет полный доступ, а затем каждый уровень ниже сужается до доступа к данным.Поэтому, как только пользователь вошел в систему, я должен получить записи из своей таблицы разрешений.Одна учетная запись может иметь более одной записи в таблице разрешений.Вот пример:

AccountID   UserName AccessLevel  AccessType State   City  Building
FB3064A7    jfakey        S            F       05     NULL   NULL
FB3064A7    jfakey        S            F       07     NULL   NULL

Вы можете видеть, что есть столбец AccessLevel, который может иметь Регион R, Штат S, Город C или Здание B.Если пользователь назначил доступ к региону, должна быть только одна запись.Если есть какой-либо другой уровень доступа (S, C или B), то у пользователя может быть несколько записей.Пример выше имеет государственный уровень.Этому аккаунту присвоено два разных состояния, и мой запрос вернет две строки.Мне интересно, я должен разделить это на два отдельных запроса или придерживаться одного запроса и объединить строки?Мне интересно, что было бы более эффективным, так как это страница входа, там много хитов.Вот пример моего запроса:

SELECT A.AccountID, A.UserName,
    P.AccessLevel, P.AccessType, P.State, P.City, P.Building
FROM Accounts AS A WITH (NOLOCK)
    INNER JOIN Permissions AS P WITH (NOLOCK)
        ON A.AccountID = P.AccountID 
WHERE UserName = 'jfakey'

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

...