多くのビジネス システムで、Users テーブルの結合を使用せずに、代わりにユーザー名 (または名と姓) を CreatedBy 監査フィールドにコピーするのを見てきました。
このアプローチには既に 1 つの問題があります。ユーザーが結婚して姓を変更すると、CreatedBy フィールドが古い値を保持する可能性があります。
データの正規化をやめて、CreatedBy フィールドに冗長なテキスト データを作成する正当な理由はありますか?
多くのビジネス システムで、Users テーブルの結合を使用せずに、代わりにユーザー名 (または名と姓) を CreatedBy 監査フィールドにコピーするのを見てきました。
このアプローチには既に 1 つの問題があります。ユーザーが結婚して姓を変更すると、CreatedBy フィールドが古い値を保持する可能性があります。
データの正規化をやめて、CreatedBy フィールドに冗長なテキスト データを作成する正当な理由はありますか?
外部キー参照を使用せずに誰かの名前を保存すると、ユーザーが作成した行に関する情報に影響を与えることなく、ユーザーを削除できます。これが賢明かどうかは、アプリケーションによって異なります。
ほとんどの組織では、3年前に誰かの名前を知ることが重要である場合、それを行う方法がいくつかあります。データベースにない可能性があります。「HRでジェリーに聞いてみてください。彼はみんなを覚えています」かもしれません。これが賢明かどうかは、アプリケーションによっても異なります。
いずれにせよ、これは必ずしも正規化のガイドラインに違反するわけではありません。1つのケースでは、ユーザーの現在の名前または優先名を保存しています。他のケースでは、行が作成されたときのユーザーの名前を保存しているのですが、それでも本当の事実です。