0
ユーザー名とパスワード、および特定のユーザーがアクセスできるWebページを保持するようにデータベースを正規化しようとしています。 は、userpassword/accessデータベーステーブルを正規化するアドバイスが必要です
userpassword table(userid,username,userpassword)
useraccess table(userid, accesstopage0,accesstopage1,accesstopage2,accesstopage3)
が明らかuseraccessテーブルが危険にさらされている...これは、私は簡単のために始めたものですが、私は「useraccess」テーブルは、私が持っている2冊に応じて正規化の最初のルールに違反していると思われます手を出す。私の質問は...この問題を解決する最良の方法は何ですか?これまでのところ、これは私がuseraccessテーブルを置き換えるために出ているものですが、これを行うには、よりエレガントな方法があるかどうか私はいくつかのアドバイスをしたいと思います:
useraccess(userid,useridsequence,pageid)
pages(pageid,pagename)
ですから、例えばのようになります。.. 。
その後、整合性を維持するために複合キーとしてユーザーIDとuseridsequenceを使用してuserpassword table(userid,username,userpassword)
0, useralpha, jinx
1, userbravo, binx
2, usercharlie, jabber
...
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
このすべては、それがある必要以上の方法より複雑なようですこれを行う良い方法は?
どのような配列IDですか?あなたが実際に参加するために必要なのは、useridとpageidだけです。しかし、関係を管理しやすいように人工的なPKを考慮しているかもしれません。 – tvanfosson
さて、あなたは本当にあなたが[塩漬けした(そして後味を付けた)ハッシュ]を保存することを望みます(http://security.stackexchange.com/questions/3272/password-hashing-add-salt-pepper-or-そのテーブルの実際のパスワードではなく、十分に塩があります)。 – steveax
シーケンスID + useridでは、一意の行が得られます。私はSHA512ハッシュアルゴリズムとパスワードのための塩を使用しています。これはセキュリティよりもSQLのほうが多いため、私はそれを言っていませんでした。 –