医薬品の日次売上高のテーブルを設計する必要があります。
{Name, code} には数百種類の製品があります。
これらの製品{名前、コード}を販売するために、何千人もの営業担当者が雇用されています。
さまざまなデポ{名前、コード}から製品を収集します。
それらはさまざまなエリアで機能します -> ゾーン -> マーケット -> アウトレットなど {すべてに名前とコードがあります}
各商品には、さまざまな種類の価格{製造価格、取引価格、業務価格、割引価格など}があります。そして、販売員はそれらの組み合わせから自由に選択して販売価格を見積もることができます。
問題は、毎日の売上高が膨大な量のデータ入力を必要とすることです。数年以内に (テラバイトではないにしても) ギガバイトのデータが存在する可能性があります。日次、週次、月次、四半期、および年次の売上レポートを表示する必要がある場合は、さまざまな種類の SQL クエリが必要になります。
これは私の最初のデザインです:
Product {ID, Code, Name, IsActive}
ProductXYZPriceHistory {ID, ProductID, Date, EffectDate, Price, IsCurrent}
SalesPerson {ID, Code, Name, JoinDate, and so on..., IsActive}
SalesPersonSalesAraeaHistory {ID, SalesPersonID, SalesAreaID, IsCurrent}
Depot {ID, Code, Name, IsActive}
Outlet {ID, Code, Name, AreaID, IsActive}
AreaHierarchy {ID, Code, Name, PrentID, AreaLevel, IsActive}
DailySales {ID, ProductID, SalesPersonID, OutletID, Date, PriceID, SalesPrice, Discount, etc...}
さて、インデックス作成とは別に、DailySalesテーブルを正規化して、今後何年も変更する必要のないきめ細かい設計を行うにはどうすればよいでしょうか?
上記の情報に基づいて、(すべてのタイプのレポートが照会される) データ入力テーブルのみのサンプル デザインを示してください。DailySales
詳細な設計アドバイスは必要ありません。DailySalesテーブルについてのみアドバイスが必要です。この特定のテーブルを分割して粒度を実現する方法はありますか?
