次のフィールドを持つusers
テーブルがあります: userid, phone, and address
. これはユーザーデータなので、ユーザーがいつでも変更できるようにしています。問題は、これらの変更を追跡し、古いデータも保持したいということです。私が検討したアイデアのいくつかを次に示します。
新しいデータを古いデータに追加し、パイプのようなセパレーターを使用します。フィールドを取得するときに、そのセパレーターの存在を確認し、存在する場合は、その後の文字を新しいデータとして取得します。(面倒だし気持ち悪い)
changes
次のフィールドを持つ別のテーブルを設定します:userid, fieldname, fieldcontent
. ユーザーがデータ (任意のデータ) を変更した場合、ユーザーのユーザー ID、フィールドの名前/ID、およびフィールドの古いコンテンツの下にあるこの別のテーブルにイベントを記録し、古いデータを上書きできるようになりました。users
新しいものと一緒に。このユーザーが行ったすべての変更を見つけたい場合は、ユーザーchanges
ID でテーブルを検索します。これに関する問題は、(すべてのフィールドの) すべてのデータ変更を 1 つのテーブルに混在させているため、さまざまなフィールド タイプに対応するためにfieldcontent
フィールドをchanges
テキストにする必要があることです。これはまだ最初のアイデアよりも優れているように見えますが、正しいことをしているかどうかはまだわかりません.
古いデータを保持するための他のアイデアや既知のベスト プラクティスはありますか?
前もって感謝します