これは、データベースを設計する際のベストプラクティスの全体的な質問であり、ネット上で答えを見つけるために質問を正しく表現することができませんでした.
従業員の安全トレーニングに関する情報を保持しているデータベースがあります。要件に関する情報は、監査目的で保存する必要がありますが、要件は年々変化する可能性があります。従業員が何をする必要があり、どれだけ完了したかを記録しておく必要があります。
私の最初の反応は、履歴データのテーブルを作成し、従業員がアクションを完了するか、アクションを完了するのに必要な時間が経過するたびに、基本的に「スナップショット」を保存することでした。間違った情報を指していません。
実装時にこれを変更し、既存の要件を変更しないようにアプリケーションをセットアップしました。要件が変更されるたびに新しい要件が作成されるため、古い要件はデータベースに残り、履歴テーブルによってポイントされます。メイン テーブルの要件テーブルでは、古い要件が非アクティブとしてマークされ、アプリケーションから削除することはできません。
この問題は以前にも発生したと確信していますが、実行可能な回答を自分で検索するのに十分なほど明確に説明することができませんでした. 私の質問は、この状況で進める最善の方法は何ですか? 私の現在の実装は良いものですか?私の最初の反応は良かったですか?両方よりも優れた別の方法はありますか?
余談ですが、この種の問題 (冗長データの保存、履歴データの保存、監査データの保存、何と呼べばいいのかわかりません) を表す単語やフレーズがあれば教えてください。