В настоящее время я работаю над проектом с конечной целью преобразования устаревшей системы в настоящую архитектуру N-Layer. Начальная часть проекта включает преобразование базовой базы данных в истинный реляционный дизайн.
Базовая база данных в настоящее время работает на IBM iSeries. Таблицы определены с использованием DDS и содержат множество избыточных данных, без проверки целостности и плохо спроектированных ключей и т. Д. В основном, рефакторинг их для полностью нормализованного дизайна не является началом.
Новые таблицы будут разрабатываться с нуля. Они также будут на том же iSeries, но будут определены с помощью DDL. Это также будет включать в себя переписывание любой вставки или обновления кода по всему приложению для использования новых таблиц. Однако существует большое количество устаревших приложений, отвечающих за отчеты, показы и т. Д., Которые не будут переписаны на этом этапе и все еще будут считывать данные из исходных таблиц. Поэтому нам нужно синхронизировать данные в старых устаревших таблицах с новыми данными таблиц. Мне было интересно, если кто-нибудь когда-либо делал что-то подобное или были какие-либо предложения? В настоящее время я думаю либо:
1) Хранимые процедуры, которые вставляют, обновляют, удаляют из новой таблицы A, также будут делать то же самое с соответствующей устаревшей таблицей B. В какой-то момент строки хранимой процедуры потребуется изменить, чтобы остановить синхронизацию таблицы B * 1007. *
2) Поместить триггеры в таблицу A, которая также изменяет таблицу B. Затем триггеры будут удалены по линии ... хранимая процедура не нуждается в изменении, но будет ли она работать нормально с управлением транзакциями?
3) Удалите унаследованную таблицу B и заново создайте ее как представление таблицы A. Не уверен, будет ли это работать, так как таблица B работает с доступом по ключу, и я считаю, что представления не поддерживают это?
Было бы интересно услышать чьи-то мысли?
Приветствия