1

データベースで「特売品」の概念を表現する最善の方法を見つけようとしています - これらは「販売する製品」に関連しています。各スペシャルは何らかの割引を提供しますが、単純な値下げだけでなく、「購入 x を半額にする」または「カテゴリ x を 30% オフにする」など、さまざまな意味で異なります。約 10 種類以上のスペシャル タイプがあるとは予想していませんが、要件が変化するため、必要に応じてさらに多くのタイプを処理できるようにする必要があります。

DBでこれらを表現する簡単な方法を考え出そうとしていますが、私が見る方法では、スペシャルごとにテーブルを作成する必要があるか、または列の負荷を持つスペシャルテーブルを作成する必要があります値の 90% が NULL になります。「割引」、「Buy x get y Free」など、タイプごとにすべてのスペシャルをグループ化する SpecialType テーブルを作成する予定です。これは、それぞれのアプリ レイヤーでビジネス ロジックを決定するために使用されます。さらに、特殊なタイプごとに 1 つのテーブルを作成し、結果をキャッシュして (基本的に、製品ごとにレンダリング可能な出力をキャッシュして)、定期的に (たとえば 5 分ごとに) 更新できるという道筋をたどることができると考えていました。

データベースの正規化を維持しながら、この状況を最も整然と処理する方法についてのフィードバックをいただければ幸いです。

4

1 に答える 1

0

特別なタイプを追加するにはコードを変更する必要があり、可能なすべての特別なタイプを合理的に予測することはできないため、特別なタイプごとに個別のテーブルを作成し、何らかの種類のマスター テーブルを含むようにすることをお勧めします。特殊なタイプ、名前、説明など...

適用できないフィールドがたくさんある単一のテーブルを使用すると、内部プラットフォームになる傾向があり、ほとんどの場合、やり過ぎです。

ところで、私の人生で最も不愉快な驚きの 1 つは、テレビ コマーシャルからのコード/データベースの変更を必要とする新しいプロモーションについて知ったときでした。

于 2011-03-27T00:29:23.317 に答える