нужен совет по нормализации таблиц паролей пользователя / доступа - PullRequest
0 голосов
/ 12 марта 2012

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

userpassword table(userid,username,userpassword)
useraccess table(userid, accesstopage0,accesstopage1,accesstopage2,accesstopage3)

Очевидно, что таблица useraccess может выйти из-под контроля. У меня вопрос ... как лучше всего решить эту проблему? Пока что это то, что я придумал для замены таблицы useraccess , но я хотел бы получить совет, если есть более элегантный способ сделать это:

useraccess(userid,useridsequence,pageid)
pages(pageid,pagename)

Так что пример будет ...

userpassword table(userid,username,userpassword)
0, useralpha, jinx
1, userbravo, binx
2, usercharlie, jabber

Затем, используя userid и useridsequence в качестве составного ключа для поддержания целостности ...

useraccess table(userid, useridsequence, pageid)
0, 0, 0
0, 1, 1
0, 2, 2
1, 0, 3
2, 0, 1
2, 1, 2

pages table(pageid,pagename)
0, page0.php
1, page1.php
2, page2.php
3, page3.php

Все это выглядит намного сложнее, чем нужно, есть ли лучший способ сделать это?

1 Ответ

0 голосов
/ 12 марта 2012

Вам нужна таблица пользовательских разрешений, которая представляет соединение «многие ко многим» между пользователями и страницами.

Эта таблица также может содержать атрибут, определяющий уровень разрешений для этой страницы.

Если вашпользователи в основном имеют те же разрешения, что и представление о ролях: гость, участник, администратор и т. д., и сопоставляют пользователей с ролями, а затем роли с разрешениями.

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

...