Mysql хранит веб-сайты и права администратора - PullRequest
1 голос
/ 02 сентября 2010

У меня есть проект с использованием C # и MySQL. Мне нужно хранить разрешения для настройки портала администратора. В настоящее время существует 6 основных разрешений (чтение, запись, просмотр, обновление, создание ...), но каждое из этих разрешений может быть применено к n объектам. таким образом, пользователь может создавать, читать на сайте a, d, f, но не иметь разрешений для других 100+ сайтов. Я подумал об использовании битов, добавленных вместе с каждым сайтом: так что таблица перми пермский стол userid int (11) perm int (4)
siteid int () и данные будут ID пользователя = 10, Пермь = 5 SiteID = 6; идентификатор пользователя = 10, perm = 5, siteid = 212 ...

разработчик хочет, чтобы мы сохранили XML в базе данных, чтобы это выглядело так: 1 1 что-то похожее на вышесказанное. Мне нужна помощь, что делает большинство людей? что лучше для производительности, у нас есть asite, который должен быть очень быстрым. структура разрешений проверяется на большинстве сохранений. Спасибо за вашу помощь заранее.

Ответы [ 2 ]

0 голосов
/ 02 сентября 2010

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

Что касается производительности. Если есть пользовательский сеанс, просто сохраните его учетные данные в своем сеансе, а не постоянно запрашивайте базу данных. Я не слишком знаком с C # и его методами, так как я - ЛАМП, но между параметрами кэширования запросов и обработчиками сеансов я сомневаюсь, что скорость будет проблемой.

0 голосов
/ 02 сентября 2010

Не упаковывать биты в поле. Это делает его неисследимым, и вы не можете создавать индексы для битов, чтобы ускорить поиск. Кроме того, вставлять XML в базу данных бессмысленно - лучше просто хранить информацию в столбцах. Я бы просто создал таблицу, в которой перечислены для каждой записи разрешения, идентификатор сайта, идентификатор пользователя и значение разрешения. Затем вы можете просто запросить, существует ли это значение для этой комбинации пользователя и сайта. Это было бы очень быстро для запроса, если правильно проиндексирован.

Итак, строка может выглядеть как

id site_id user_id permission_id
1    1       1        1 (read)
2    1       1        2 (write)

Затем вы запрашиваете его как

select id from permissions where site_id = X and user_id = X and permission_id = X

Если он возвращает id> 0, его там.

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