2011-06-25 8 views
0

私はスキーマデータベースMySQLを作成します。ユーザー名、パスワードなど、評価システムがあり、月に利用可能です。 標準は、それは次のようになります。どのように評価システムとの月に利用可能な最高のスキーマデータベースを作成する?

 
id | username | password | january | february | march  | rating1 | rating2| rating3 | 
1 | john  | xxx  | 1  | 0  | 1   | 3  | 3  | 6 
2 | amy  | xxx  | 1  | 1  | 0   | 1  | 6  | 3 

ユーザーが記事を買えば、その後の評価(1,2,3)を追加する必要があります。ジョンに2を選択したならば、rating2 +1

 
id | username | password | january | february | march  | rating1 | rating2| rating3 | 
1 | john  | xxx  | 1  | 0  | 1   | 3  | 4  | 6 
2 | amy  | xxx  | 1  | 1  | 0   | 1  | 6  | 3 

年1月、2月(1 - 使用可能な、0 - 利用できない)などが自分自身ジョン又はエイミーを設定しました。

これは良いですか? Januar/feb/marchとrating1/2/3のテーブルを別に作成する必要がありますか?たぶん評価のためだけ?

答えて

2

ハードコアデータベースデザイナーではありませんが、一見すると、これはスキーマが正規化されていません。

あなたが良いだろう月と評価のための別のテーブルを作成することができる場合は、以下のサンプル

Dを見つけてください|ユーザー名|パスワード

1 |ジョン| xxx
2 |エイミー| xxx

id |月|評価

1 | 1 | 3

MonthID | MonthName

1 | 1月

どのようにこのsujjestionは、あなたの提案データベースにとって理想的な解決策ではないかもしれません。

0

[OK]私はこれが遅いことを知っていますが、これは非常に深刻です!パスワードの暗号化

ため

まず使用bcryptの

第二に、適切に暗号化されていないパスワードを保存しないでください。これを正しく行うには「塩」が必要です。 http://www.nathandavison.com/posts/view/13/php-bcrypt-hash-a-password-with-a-logical-salt

私はPHPの男じゃないが、それはよさそうだ:

はこちらを参照してください。

DBに関しては、Prabhakanthaの回答はOKと思われますが、完全ではない可能性があります。

ユーザー

id | username | password | salt 

1 | john  | xxx  | blah 
2 | amy  | xxx  | ughh 

評価

id | month_id | rating 
1 | 1  | 3 

id | month | year 
1 | January | 1990 

私はレールの世界のルビーで私はポリモーフィックな関連でこれをモデル化するだろう知っています。ここでどのように動作するか見てみましょう:http://railscasts.com/episodes/154-polymorphic-association

はいそれはレール上のビデオですが、ここで適用されます。

関連する問題