Oracle バックエンドを使用してエンタープライズ アプリケーションを開発しています。現在、DB アーキテクチャのコア部分を設計していますが、いくつか質問があります。
- まず最も重要なことは、私のテーブルのほとんどは古いデータを保持する必要があるということです。例えば
フィールドを持つテーブルを検討してください
契約番号、契約名、契約者、契約メール
私は次のような記録を持っています
12、xxx、yyy、xxx@zzz.ccc
そして、誰かがそれを変更します
12、xxx、zzz、xxx@zzz.ccc
古いレコードのコピーを保持しながら、いつでも新しいレコードを表示する必要があります。
だから私が考えたのは、古いデータの重複レコードを入れて、変更されたフィールドを更新し、「アクティブ」のようなものでアクティブなレコードを追跡するためのフラグを1にすることでした.
欠点は、これによりテーブルに冗長性が生じ、悪い設計のように見えることです。しかし、他のモデルは不必要に複雑に思えますが、これは私にはすっきりしているように思えます。また、重複したレコードを持つパフォーマンスの問題も見当たりません。それで、これでいいのか、それとも何か足りないのか教えてください。
1対多の関係がある場合、各レコードでマスターIDを繰り返し、子IDを変更することにより、個々のレコードに複数のエンティティをマップするマッピングテーブルがあると想定しています。これは正しい方法ですか、それとももっと良い方法がありますか。
データベースのベスト プラクティスに関する本はありますか。
ありがとう。
扱っているデータベースは、2 ノード RAC クラスタ上の Oracle 11g です。