Начало тут.

Итак, продолжим…  Кратко пробежимся по серверам, бд, фирмам (имеется в виду логическая бд Navision, она же компания) , по их связям и специализации…

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

schemaСхема отображается с масштабированием, кликните на неё для увеличения.

Условные обозначения:

— Зеленый прямоугольник — сервер SQL;
— Синий прямоугольник — SQL БД;
— Красный овал — «логическая» фирма внутри SQL БД;
— Фиолетовые фиговины :) — «внешние» системы;
— Стрелки — направления обмена;

Пояснения:

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

Далее идут «региональные» центры дистрибьюции или иначе говоря центральные склады, это центр приема, распределения товара и накопления промежуточных финансовых итогов с самих складов и с относящихся к ним магазинов. Так же Московский склад является источником товаров для Регионов, живущих в 1с (в 1с там тоже распределенная база со своими региональными складами и магазинами, но 1с в перспективе умрет, отдав свои магазины в Навижн или как отдельный региональный центр или как некое подмножество магазинов в московской базе), сам же 1с регионы отдаёт в Московский склад остатки своих магазинов. Обмен идёт через FTP.  Прочие ЮЛ (Юридические Лица) — это бренды  которые ещё остаются в старой системе написанной на Delphi, на смену которой и пришел Навижн. В итоге Навижен должен поглатить все прочие системы… если сам не сдохнет :)

Там же, на уровне региональных складов, где-то затерялся отдельный OLAP сервер для аналитиков :)

Уровнем ниже идут базы магазинов сгруппированные по брендам, они живут на складских серверах. Внутри каждой базы Фирмы магазинов. Основные справочники сделаны общими.

Вообще то, изначально, планировалось, что в каждом магазине будет свой локальный сервер на неSQLной нативной базе Navision. Но внедрение Навижена на первом же мелком бренде (порядка 4 магазинов)  показало, что отследить репликацию между таким кол-вом серверов и баз, которые выйдут в итоге —  задача для сумасшедшего. Не говоря уже о том, что ежедневно надо заходить в каждую базу и ставить там обновление (система постоянно дорабатывается и каждый день делается что-то новое, что надо раскидать по всем базам ручками, автоматизировать это нельзя никак).  В общем решили минимизировать число серверов и баз. Вопрос кому должно жить лучше был решен в пользу IT отдела :) Создали по отдельной базе для каждого бренда и разместили базы «у себя»  на складе, а магазинам настроили терминальный сервер, где они работают удаленно. Связь конечно так себе и частенько их работа смахивает на пошаговую стратегию…

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

Итого получается:

Наименьшая структурная единица — фирма, но она может  логически иметь одно или несколько наименований склада в самой системе (для магазина — это имя склада с ним связанного, для центрального склада это склады работающие в нем), т.е.
Склад -> Фирма -> БД -Сервер БД

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

Вот всё это явно напрашивается в общию справочную таблицу, по которой можно будет строить запросы.


Продолжение следует..