2011-08-16 3 views
1

私は既存の質問の中で私の問題のマッチを見つけようとしていました。私はリンクを回答として受け入れ、質問があれば閉じます。履歴データを保存する既存のウェブサイトのテーブルを再構成しますか?

私が探しているのは、既存のテーブルを再構築する方法です。私はウェブサイトを持っており、私はそれに取り組むのにかなり長い時間を費やしました。今私はすべてのテーブルを持っていて、その場所で選択します。残念ながら、「姓」「姓」の表は、ユーザーが情報を更新するにつれて大きく変化しています。これらのフィールドの履歴データを保存したいので、ユーザーを変更した後で実際の名前でユーザーを見つけることができます。名前はユニークではありませんが、ID番号よりも覚えやすいです。だから、私はフィールド(ユーザー名、電子メール、ファーストネーム、middlename、familyname、dob、パスワード、国)のメンバーのテーブルを持っています。 firstnameとfamilynameの新しいテーブルを作成して、変更を保存できるようにする必要がありますか?

答えて

2

私は同様の問題がありました。 この種のフィールドを持つテーブルを作成しました。

| Id | id_user | name_field | value | date | 

私は明確なの多くを考えて...「name_field」ユーザーが変更されたことである...(氏名、国、) 「value」セルと「date」にあったこと変更

+0

私はただの変更があったことを望むだけではありません。私も以前の名前でユーザーを見ることができるようにしたい。 –

+0

何が問題なのですか?あなたのすべての変更を与えるためにユーザーIDのためのテーブルの単純な選択 – Nightw0rk

+0

ああ、大丈夫。次に、以前のユーザー名でどのように選択しますか? –

1

答えは「はい」です。最初の/姓の新しいフィールドを追加し、 "fullname"を "first"と "last"に変換するための適切なアルゴリズムを見つけてください(excelを使用することもできます)

+0

なるように削除し、フルネームフィールドを追加します姓のフィールド...しかし、あなたはどのように歴史的なデータを扱うのですか? –

1

があったとき、ちょうど私が正しくあなたの質問を解釈していることを確認しますする: 現在、フィールドusername, email, firstname, middlename, familyname, dob, password, country を持つテーブルを持っていて、FirstNameおよびFamilyNameで列の履歴を保存したいです。あれは正しいですか?

もしそうなら、あなたのテーブル(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  [email protected] Bob   Smith    1/Jan/2011 null 

ボブは彼の家族の名前を変更すると、これは

id username email firstname familyname ... valid_from valid_until 
----------------------------------------------------------------------------------------------------- 
    1  bob  [email protected] Bob   Smith    1/Jan/2011 1/Aug/2011 
    1  bob  [email protected] Bob   Brown    1/Aug/2011 null 
+0

あなたは ' ID | id_name |名前フィールド| name_value | name_from | name_until | id_lastname |ラストネームフィールド| lastname_value | lastname_from |電子メール、ファーストネーム、ミドルネームなどの場合は、lastname_until | 'とか? –

+0

答えを –

+0

に追加しましたが、主キーの「id」はもはやユニークではありません。 –

関連する問題