Реализация складского учета методом FIFO с использованием продвинутых возможностей баз данных

В своем докладе на Дне открытых дверей я приводила пример того, что нормальная база — не всегда идеальное решение. Иногда стоит поступиться правилами построения баз данных, при этом понимая, зачем и как, каким средствами это стоит делать.

Программа складского учета должен оперировать с целым набором процессов, каждый из которых характеризуется своим собственным набором параметров, и следовательно при реализации хранения информации о процессах с помощью реляционных баз данных данные о разных процессах будут храниться в разных таблицах. При извлечении из базы информации о состоянии складов (количество товара на складе, его себестоимость и так далее) потребуется выполнять запросы по нескольким таблицам, разным по структуре и содержащем довольно большое число записей (на практике — от десятков до сотен тысяч в зависимости от масштабов и деятельности предприятия).

Если бы нас интересовало только текущее состояние складов, то можно было бы обойтись кешированием. Но ценность программ складского учета определяется возможностью получения разнообразной аналитической информации, отчетов в разных разрезах и с разными параметрами. Именно при построении аналитики тот факт, что информация разбросана по нескольким таблицам, приводит к сложным и медленным запросам.

Предлагаемый выход: введение вспомогательной таблицы-реестра, хранящей выборочную информацию по каждой записи таблиц документов. Для поддержания реестра в актуальном состоянии предлагается задействовать триггеры, а для извлечения информации — хранимые функции и процедуры. Введение реестра позволяет нам вычислять данные о состоянии склада быстро, использование триггеров обеспечивает синхронность изменения документов и реестра, хранимые функции облегчают программисту написание запросов, давая тем самым более быструю разработку и отладку программного кода.

Скачать презентацию.
Смотреть видеозапись доклада.

Коментарии