Мне нужно разработать таблицу для ежедневных продаж фармацевтической продукции.
Доступны сотни типов продуктов {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
. Есть ли способ сломать эту конкретную таблицу, чтобы добиться детализации?