Мне известны некоторые общие рекомендации при проектировании базы данных для приложения, но как насчет редизайна?
Я работаю в команде, перед которой стоит задача перепроектировать внутреннее бизнес-приложение, хотя, несмотря на то, что я говорю «внутреннее», я, к сожалению, на много-много слоев людей не контактирую с фактическими пользователями системы.
Текущая программа в Oracle Forms, разбросанная по куче ненормализованных таблиц, иногда с несколькими почти дублированными таблицами, содержащими небольшие варианты данных друг друга. Ограничения часто имеют форму плохо соблюдаемых хранимых процедур. Даже типы не сохраняются правильно. Я сталкивался со всевозможными неверными данными, которые Oracle, похоже, игнорирует, но подходит (и это правильно) мастеру импорта / экспорта SQL Server. (Например, двузначные целые числа не составляют полное время!)
Первоначальная программа, вероятно, насчитывает двадцать лет, и все разработчики вышли на пенсию так давно, что даже пожилые люди здесь не представляют, кто они. В результате на самом деле не существует каких-либо четких требований, которые следует выполнять - мы просто должны дублировать функциональность существующего приложения и сохранять существующие данные.
Конечным результатом перезаписи будет веб-версия, работающая на ASP.NET с MS SQL Server для серверной части.
Мои два других товарища по команде разработчиков намного, намного старше меня, оба с опытом работы в бизнесе / MIS, в то время как у меня CS. Опыт старшего члена был почти исключительно формами Oracle, а другой участник в основном занимался бизнес-приложениями в Visual Basic. Хотя мой опыт работы с базами данных был ограничен проектированием новых баз данных для проектов в MySQL или SQLite, в основном для моих старшеклассников, я, похоже, единственный, кто имеет опыт проектирования баз данных вообще.
Я уже написал небольшую программу на C #, которая считывает все существующие данные в нейтральный формат, готовый для повторного приведения и помещения в новую базу данных. Я планирую написать загрузочный код после того, как будет создана целевая база данных, чтобы данные можно было правильно распределить по новым нормализованным таблицам, добавить в правильном порядке для соблюдения новых ограничений и т. Д. Затем эту же программу можно будет снова запустить позже. скопировать производственные данные в реальный недавно развернутый законченный редизайн. Это оставляет фактическую модернизацию базы данных как главное, чтобы выяснить.
Итак, суть моего вопроса: каковы некоторые передовые практики для проведения редизайна с уровня базы данных до существующего приложения?