Проектирование структуры данных

Jul 13, 2008 21:40

Собственно, неоднократно видел криво спроектированные структуры данных для информационно-учетных систем предприятия. Причем как студенческие поделки, так и реально внедренные вещи.
Уже давно сформулировал свою версию основных принципов проектирования структуры данных для таких систем, но как-то все руки не доходили записать. Итак...

Основными единицами структуры данных являются таблица и связь (внешний ключ).
Существуют три категории данных: нормативно-справочная информация (НСИ); данные, редактируемые пользователем, и внутреннее состояние системы.

Нормативно-справочная информация - это всевозможные, справочники. Единицы измерения, наименования товаров, сотрудники, ну и так далее. Таблицы НСИ ссылаются только друг на друга, и никогда - на редактируемые пользователем данные и таблицы внутреннего состояния системы.

Внутреннее состояние системы - это таблицы, описывающие состояние моделируемого объекта. Это, например, остатки товаров на складе, записи, фиксирующие принятие товаров на склад и списание со склада, платежи и прочая информация, которая никогда не редактируется непосредственно. Можно также сказать, что это примерный аналог регистров в 1С.

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

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

Такая процедура обычно называется проведением, или применением документа (проведением из одного статуса в другой). Собственно, это и соответствует концепции документов и проведения документов в 1С.

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

Вот, собственно, и всё.

software engineering

Previous post Next post
Up