В общем случае вы можете сделать свои изменения прозрачными для пользователей, если сможете создавать обновляемые представления.
- Нормализация базовой таблицы на 3NF, BCNF или 5NF.
- Переименование исходной базовой таблицы.
- Создание обновляемого представления с тем же именем, столбцыи строки как исходная денормализованная базовая таблица.
- Убедитесь, что разрешения для нового представления соответствуют разрешениям для исходной базовой таблицы.
- Test.
- Повтордо завершения.
Любое клиентское программное обеспечение, которое пытается ВЫБРАТЬ, ВСТАВИТЬ, ОБНОВИТЬ или УДАЛИТЬ исходную базовую таблицу, вместо этого попадет в обновляемое представление.(Это потому, что таблицы и представления совместно используют пространство имен, и это не случайность.) DBMS и ваш вспомогательный код обеспечат правильную работу.
В зависимости от вашей платформы и декомпозиции, создание обновляемого представления может быть простым и невозможным.В Oracle, я думаю, в худшем случае вам придется написать триггеры INSTEAD OF для поддержки всех операций запроса.Это не так уж плохо.
Но, основываясь на нескольких месяцах, проведенных на SO, я должен сказать, что не уверен на 100%, что вам действительно нужно это делать, или что вы действительно хотите это сделать.Опубликуйте DDL и репрезентативные данные ваших таблиц в виде операторов SQL INSERT, и мы сможем предложить более конкретные предложения.