Недавно я занялся разработкой базы данных SQL Server 2000, которая нуждается в некоторой помощи. Мы планируем в ближайшее время обновить его до SQL Server 2005. В этой базе данных нет полей аудита в таблицах (CreatedBy, CreatedDate и т. д.), Нет внешних ключей и ужасный общий дизайн. Есть полдюжины программ, которые напрямую обращаются к базе данных с помощью встроенного SQL и других старых / плохих методов.
Я хотел бы очистить схему и доступ к данным. Есть ли у вас какие-нибудь предложения, с чего начать? Это производственная база данных, и она должна продолжать работать, пока совершенствуется.





Вероятно, вам придется начать с приложений, которые обращаются к базе данных. Скорее всего, вы обнаружите, что любые изменения в схеме базы данных нарушат работу этих других приложений. Наиболее частым виновником, который я обнаружил, является выбор * sql с последующим доступом к данным в зависимости от положения столбца. Если вы вставите столбец перед последним столбцом, этот код сломается. Кроме того, если вы не используете значения по умолчанию для новых столбцов, любые команды вставки завершатся ошибкой.
Лучше всего понять, как эти внешние программы используют базу данных, затем спроектировать новую базу данных и затем по очереди перенести каждую из этих программ в новую базу данных.
Внесение изменений в эту базу данных во время ее работы почти гарантированно приведет к поломке других приложений.
Вы можете исправить, проанализировать, нормализовать и т. д. Схему, сохранив при этом текущую схему / интерфейс за представлениями.
Использование перед триггером для представлений может гарантировать, что приложения будут писать и читать так, как они ожидают.
Таким образом, вы можете начать перенос клиентских приложений на новую схему, в то же время позволяя текущему приложению работать. И ваши данные безопаснее (DRI, FK, DF, CK и т. д.) В новой схеме.
Это также поддерживает согласованность контракта интерфейса для этой неожиданной электронной таблицы, которая запускается один раз в месяц, и никто не знает о том, что это важно для этого отчета на конец месяца ...