次の 2 つのテーブルを含む保険会社のデータベースを設計しているとします。
お客様
CustomerID, CustomerName
ポリシー
PolicyID, CustomerID, EffectiveDate, ExpirationDate
ポリシーの有効期限が今日以降であるようなポリシーを持っている場合、顧客は「アクティブ」と見なされます。当然のことながら、非アクティブな顧客を除外する、またはその逆のクエリを多数作成することを期待しています。Customers
私の議論は、フィールド「アクティブ」をテーブル に追加するかどうかです。
一方では、これにより一連のクエリのパフォーマンスが向上し、見た目がすっきりして理解しやすくなります。
一方で、毎日更新する必要があります。また、顧客がアクティブであると見なされるかどうかは、完全にポリシー テーブル内のデータの関数です。したがって、「アクティブ」列を追加することで、顧客がアクティブとしてマークされているが、ポリシー データでは非アクティブと見なされる (またはその逆) という潜在的なシナリオを作成しています。つまり、データ自体が矛盾するようなデザインを作成しています。
これは悪い習慣ですか?