現在、Java でユーザーベースの Web アプリケーションを開発しています。
ユーザーは、名、姓、地域 (アジア、ヨーロッパ、米国、英国など)、国、部門、支店、製品などの多くのプロパティを持つことができます。
このユーザーには、上記のすべてのフィールドを含む通常の CRUD 画面があります。
ユーザーの追加/編集画面には、発効日と呼ばれる日付フィールドもあります。このユーザーの追加/編集が通常の CRUD での通常の追加/編集と異なる点は、ユーザーに対して行われた更新が有効日まで反映されないことです。
今日が 4 月 6 日で、リージョンがアジアで発効日が 4 月 10 日の新しいユーザーを追加するとします。そして今、私は同じユーザーを変更し、彼の地域をアジアから米国に変更しましたが、発効日は5月15日です。
そのため、5 月 15 日までシステムは彼の地域をアジアのみとして表示し、5 月 15 日に彼の地域は自動的に米国に変更されるはずです。
4 月のようにアジアで働いているユーザーと考えることができますが、5 月 15 日から彼は米国で働くために移動します。つまり、リージョンはアジアから米国発効日 5 月 15 日に変更されます。したがって、5 月 15 日まではアジアのユーザーとしてのみ表示されます。
したがって、単純な更新操作として、彼の地域をアジアからデータベースに更新することはできません。
これは、部門、支店、製品など、他の多くの分野にも当てはまります。
同じユーザーに対して複数のレコードを持つことはできません。
編集1:
また、ユーザーの履歴や今後の更新も確認できるはずです。
4 月 6 日のように、5 月 15 日からユーザーの地域が変わり、5 月 10 日から彼のディビジョンが A から B に変わることがわかります。
また、15 日の発効日から提案されているアジアから米国へのユーザーの移動が今は行われない可能性があることを後で知ったので、その更新を削除できるはずです。
編集2: -
上記の状況で、元のユーザー テーブルとユーザー変更ログ テーブルを変更するにはどうすればよいですか?
システム内のリージョン asia を持つユーザーが、今後数週間で asia から Us に変更されるとします。ユーザーはユーザーに対して同じ更新を行います。彼は地域をアジアからユーザーに変更し、発効日を将来の日付として選択します。
次に、地域がアジアから米国に変更されたかどうかを確認するにはどうすればよいですか (地域のような名前の mre フィールドがある場合があります)。コードレベルでそれを行うべきですか、それともトリガーなどを使用してデータベースレベルで行うことは可能ですか?
このためのシステムとデータベースの設計を手伝ってください。