我需要为药品的日常销售设计一张表格。
有数百种类型的产品可用{名称,代码}。
成千上万的销售人员被雇用来销售这些产品{名称,代码}。
他们从不同的仓库{名称,代码}收集产品。
他们在不同的区域 -> 区域 -> 市场 -> 奥特莱斯等工作。{都有名称和代码}
每个产品都有各种类型的价格{生产价格、贸易价格、商业价格、折扣价格等}。并且,销售人员可以从这些组合中自由选择来估算销售价格。
问题是,日常销售需要大量的数据输入。几年内可能会有千兆字节的数据(如果不是太字节)。如果我需要显示每日、每周、每月、每季度和每年的销售报告,我将需要各种类型的 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
桌子的建议。有没有办法打破这个特定的表来实现粒度?