私があなたの質問を正しく解釈したことを確認するために:あなたは現在フィールド
username, email, firstname, middlename, familyname, dob, password, country
を持つテーブルを持っていて、名と家族名の列の履歴を保存したいと思っています。あれは正しいですか?
その場合は、テーブルに時間有効性列(valid_from、valid_until)を追加し、変更ごとに新しい行を挿入して、現在のレコードの「valid_from」をnow()に設定し、valid_untilをnullに設定することをお勧めします。また、このユーザーの最後の行のvalid_until列をnow()に設定します。現在のレコードは、valid_untilがnullであるレコードです。
このデザインは自己記述的ですが、名前だけでなく、テーブル内のすべてのフィールドの変更を保存した方がよいでしょう。また、パスワードの履歴を保存することもできます。
テーブルは次のようになります。
id
username
email
firstname
middlename
familyname
dob
password
country
valid_from
valid_until
例えば:
id username email firstname familyname ... valid_from valid_until
-----------------------------------------------------------------------------------------------------
1 bob bob@b.com Bob Smith 1/Jan/2011 null
ボブが家族の名前を変更すると、これは次のようになります。
id username email firstname familyname ... valid_from valid_until
-----------------------------------------------------------------------------------------------------
1 bob bob@b.com Bob Smith 1/Jan/2011 1/Aug/2011
1 bob bob@b.com Bob Brown 1/Aug/2011 null