0
我想正常化數據庫以保存用戶名和密碼,以及特定用戶有權訪問哪些網頁。這是我開始爲簡單起見,但我認爲「useraccess」表違反根據2本書我有正常化的首要原則...需要建議正常化用戶密碼/訪問數據庫表
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
然後使用用戶名和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
所有這一切似乎方式複雜得多,它需要的是有一個更好的方法來做到這一點?
什麼是序列標識?所有你真正需要的連接是userid和pageid,儘管你可能會考慮一個人爲的pk來輕鬆管理關係。 – tvanfosson 2012-03-11 20:25:36
順便說一句,我希望你真的要存儲一個[鹽漬(胡椒粉)散列](http://security.stackexchange.com/questions/3272/password-hashing-add-salt-pepper-or-是足夠的),而不是該表中的實際密碼。 – steveax 2012-03-11 20:29:12
使用序列標識+用戶標識可以獲得唯一的行。我正在使用SHA512哈希算法,併爲密碼添加salting。我沒有這麼說,因爲這是關於sql而不是安全的。 – 2012-03-11 20:33:16