私は MySQL データベースを作成しており、それを正規化する方法を知っていると確信しています。しかし、どう対処すればよいか分からない問題があります。
私はテーブルを持っていると言う
users
----------
user_id primary key
some_field
some_field2
start_date
user_level
ここで、user_level はユーザーのレベルを示します。これは、1、2、3、4、5 と言うことができます。しかし、時間が経つにつれて、ユーザーはレベルを変更する可能性があります。明らかに、レベルが変更された場合は、users テーブルに対して単純に UPDATE を実行できます。しかし、ユーザーの過去のレベルの履歴を記録しておきたい
このため、user_level_history という新しいテーブルを検討しています。
user_level_history
--------------
id autoincrement primary key
user_id
level_start_date
次に、users テーブルを変更します。
users
----------
user_id primary key
some_field
some_field2
start_date
user_level_history_id
次に、ユーザーの現在のレベルを取得するために、
user_level_history_id = user_level_history.id
そして、ユーザーの履歴を取得するために、user_level_history からすべての行を user_id で選択し、時系列順に並べることができます。
これはこれを行う標準的な方法ですか?私がこの問題に遭遇した最初の人だとは想像できません。
もう 1 点: 私は 5000 人未満のユーザーを想定しています。さらに多くのユーザーがいる場合、別のソリューションが必要になるでしょうか?
前もって感謝します。