Лучший подход к разработке базы данных Brownfield в SQL Server 2000/2005

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

Я хотел бы очистить схему и доступ к данным. Есть ли у вас какие-нибудь предложения, с чего начать? Это производственная база данных, и она должна продолжать работать, пока совершенствуется.

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
0
201
2

Ответы 2

Вероятно, вам придется начать с приложений, которые обращаются к базе данных. Скорее всего, вы обнаружите, что любые изменения в схеме базы данных нарушат работу этих других приложений. Наиболее частым виновником, который я обнаружил, является выбор * sql с последующим доступом к данным в зависимости от положения столбца. Если вы вставите столбец перед последним столбцом, этот код сломается. Кроме того, если вы не используете значения по умолчанию для новых столбцов, любые команды вставки завершатся ошибкой.

Лучше всего понять, как эти внешние программы используют базу данных, затем спроектировать новую базу данных и затем по очереди перенести каждую из этих программ в новую базу данных.

Внесение изменений в эту базу данных во время ее работы почти гарантированно приведет к поломке других приложений.

Вы можете исправить, проанализировать, нормализовать и т. д. Схему, сохранив при этом текущую схему / интерфейс за представлениями.

Использование перед триггером для представлений может гарантировать, что приложения будут писать и читать так, как они ожидают.

Таким образом, вы можете начать перенос клиентских приложений на новую схему, в то же время позволяя текущему приложению работать. И ваши данные безопаснее (DRI, FK, DF, CK и т. д.) В новой схеме.

Это также поддерживает согласованность контракта интерфейса для этой неожиданной электронной таблицы, которая запускается один раз в месяц, и никто не знает о том, что это важно для этого отчета на конец месяца ...

Другие вопросы по теме