У вас работает профильный подход? Ищите With the @Profile annotation
раздел
@Profile("ConfigOne")
@Configuration
Лучший подход к миграции на применимый дизайн? ТЩАТЕЛЬНО
Если Вы не готовы повредить (и зафиксировать) каждое приложение, которое в настоящее время использует базу данных, Ваши опции ограничены, потому что Вы не можете изменить существующую структуру очень.
Перед началом думайте тщательно о мотивациях - если у Вас есть существующая проблема (ошибка для фиксации, улучшение для создания) затем медленно идут вперед. Однако редко стоит обезьяне вокруг с рабочей производственной системой только достигнуть улучшения, которое еще будет когда-либо замечать nonone. Обратите внимание, что это может играть в Вашу пользу - если существует существующая проблема, можно указать управлению, что самый экономически эффективный способ починить вещи состоит в том, чтобы изменить структуру базы данных таким образом. Это означает, что у Вас есть поддержка управления изменений - и (надо надеяться) их резервное копирование, если что-то поворачивает сформированную грушу.
Некоторые практические мысли...
Внесите одно изменение за один раз... и только одно изменение. Удостоверьтесь, что каждое изменение корректно, прежде чем Вы будете идти дальше. Старая пословица "семь раз отмерь, один раз отрежь" релевантна.
Автоматизируйте Автоматизируют, Автоматизируют... Никогда не делайте изменения в производственную систему "живым" использованием Studio управления SQL Server. Запишите сценарии SQL, которые выполняют все изменение сразу; разработайте и протестируйте их против копии базы данных, чтобы удостовериться, что Вы разбираетесь в них. Не используйте производство в качестве своего тестового сервера - Вы могли бы случайно запустить скрипт против производства; используйте выделенный тестовый сервер (если размер базы данных находится под 4G, используйте SQL Server Express, работающую на Вашем собственном поле).
Резервные копии... первый шаг в любом сценарии должен быть должен скопировать базу данных, так, чтобы у Вас был путь назад, если что-то действительно идет не так, как надо.
Документация..., если кто-то приезжает к Вам через двенадцать месяцев, спрашивая, почему функция X из их приложения повреждается, Вам будет нужна история точных изменений, внесенных в базу данных для помощи диагнозу и восстановлению. Сначала хороший шаг должен сохранить все Ваши сценарии изменения.
Ключи..., которые это обычно - хорошая идея сохранить кратким обзором первичных и внешних ключей, в базе данных и не показало через приложение. Вещи, которые похожи на ключи на бизнес-уровне (как Ваше число заказа на работу) имеют тревожащую привычку к наличию исключений. Представьте свои ключи как дополнительные столбцы с соответствующими ограничениями, но не изменяйте определения существующих.
Удачи!
Я не могу думать о разумном способе автоматизировать это.... некоторый человеческий вход является ключом в таких рефакторингах, если Вы хотите, чтобы вывод был полезен.
Число заказа на работу ре; принятие Вас хочет, чтобы это продолжило быть столбцом IDENTITY; можно ли, возможно, заполнить данные, найти самое большое, затем использовать ALTER TABLE для создания этого ИДЕНТИФИКАЦИОННЫМИ ДАННЫМИ? У меня нет инструментов TSQL для вручения, таким образом, я не могу протестировать, к сожалению. С другой стороны, просто считайте это естественным ключом.
Я рекомендую использовать хранимые процедуры для помощи процессу перевода.
Конкретно:
StoredProcs
класс помощника для консолидации доступа к базе данных там.Результат этого процесса будет состоять в том, что Вы имеете: a) новую структуру дб, которая проверена против старой структуры и протестирована против "прагматизма"; b) журнал потенциальных проблем, против которых Вы, возможно, должны кодировать (такие как ошибки, которые Вы не можете зафиксировать через свое преобразование, потому что они требуют концессии в Вашей схеме, которую Вы не хотите),
(Я мог бы отметить, что полезно записать сценарий в Ваших предпочтительных сценариях/языке программирования, а не в, скажем, SQL.)
Вы не сказали, необходимо ли сохранить текущий интерфейс приложения, или планируете ли Вы переписать любые запросы в приложении.
Так или иначе я был бы
Курсоры, в то время как не предпочтительный вариант в операционных запросах, являются большими для этого типа приложения, потому что можно пойти о задаче очень структурированным способом. Эти сценарии имеют тенденцию быть очень читаемыми, который важен, когда это не работает правильно далеко, и Вы имеете, проходят несколько повторений.
Можно использовать SQL Server Integration Services (SSIS), которая является частью SQL Server 2005 для помощи Вам с миграцией. Это используется для передачи данных от одной формы до другого:
http://en.wikipedia.org/wiki/SQL_Server_Integration_Services http://www.microsoft.com/sqlserver/2005/en/us/integration-services.aspx
Просто чтобы добавить простую подсказку. Когда у вас есть диаграмма отношений сущностей на одном A4 или A3 перед вами, правильная нормализация не будет означать отношений "многие ко многим". Проверьте эту книгу или хотя бы сайт .