データベースで「特売品」の概念を表現する最善の方法を見つけようとしています - これらは「販売する製品」に関連しています。各スペシャルは何らかの割引を提供しますが、単純な値下げだけでなく、「購入 x を半額にする」または「カテゴリ x を 30% オフにする」など、さまざまな意味で異なります。約 10 種類以上のスペシャル タイプがあるとは予想していませんが、要件が変化するため、必要に応じてさらに多くのタイプを処理できるようにする必要があります。
DBでこれらを表現する簡単な方法を考え出そうとしていますが、私が見る方法では、スペシャルごとにテーブルを作成する必要があるか、または列の負荷を持つスペシャルテーブルを作成する必要があります値の 90% が NULL になります。「割引」、「Buy x get y Free」など、タイプごとにすべてのスペシャルをグループ化する SpecialType テーブルを作成する予定です。これは、それぞれのアプリ レイヤーでビジネス ロジックを決定するために使用されます。さらに、特殊なタイプごとに 1 つのテーブルを作成し、結果をキャッシュして (基本的に、製品ごとにレンダリング可能な出力をキャッシュして)、定期的に (たとえば 5 分ごとに) 更新できるという道筋をたどることができると考えていました。
データベースの正規化を維持しながら、この状況を最も整然と処理する方法についてのフィードバックをいただければ幸いです。