Инсайт по модели данных

Недавно я читал статьи по моделированию данных и Data Domain.

И внезапно ко мне пришел инсайт — я взглянул под непривычным углом на то, что видел уже много раз.

В 1С есть приходная и расходная накладная. А ведь по сути это один и тот же объект — продажа. Состав полей абсолютно одинаков, потому что операция одна, только отражается или у поставщика или у покупателя.

Поэтому можно было бы делать просто документ Продажа. С признаком отражения у поставщика это был бы аналог расходной накладной, а с признаком отражения у покупателя это был бы аналог приходной накладной.

Понятно, что так делать, скорее всего в реляционных базах данных не будут. А вот в объектных базах возможно.

Кстати, учитывая что операция одинаковая, служебные процедуры тоже похожи, например, пересчеты при комплектации/погрузке товаров у поставщика и пересчеты при приемке у покупателя.

А вот, например, операция перемещения товаров привычно отражается одинаково у отправителя и получателя одним документом «Перемещение товаров».

Никогда раньше об этом не задумывался…

Следующий шаг — ведь поступления товаров тоже не однородны.

Бывают поступления товаров, услуг, на комиссию. Делать отдельные виды документов или поле вида накладной?

Увы, в рамках реляционной модели данных эта задача «красиво» не решается.

Красивому решению мешает кризис IT, который наличествует даже в теме моделирования данных.

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