Подсказки относительно рефакторинга устаревшей [закрытой] схемы базы данных

В Java все находится в форме класса.

Если вы хотите использовать любой объект, тогда у вас есть две фазы:

  1. Объявить
  2. Инициализация

Пример:

  • Объявление: Object a;
  • Инициализация: a=new Object();

То же самое для концепции массива

  • Объявление: Item i[]=new Item[5];
  • Инициализация: i[0]=new Item();

Если вы не дают секцию инициализации, тогда возникает NullpointerException.

14
задан Rudi Visser 20 January 2013 в 15:38
поделиться

8 ответов

Вот целый каталог рефакторингов базы данных:

http://databaserefactoring.com/

5
ответ дан 1 December 2019 в 14:46
поделиться

Эта книга (Осуществляющий рефакторинг Базы данных) была удачей мне при контакте со схемами унаследованной базы данных, включая то, когда я должен был заниматься почти той же самой проблемой для нашей базы данных материально-технических ресурсов.

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

3
ответ дан 1 December 2019 в 14:46
поделиться

Это - очень трудная вещь работать вокруг; Пара быстрых опций после рефакторинга базы данных:

  • Создают представления, которые соответствуют исходной схеме, но вытягивают из новой схемы; Вам, возможно, понадобятся триггеры здесь, таким образом, любые обновления представлений могут быть обработаны.
  • Создают новую схему и вставляют, включает каждую сторону для поддержания другой стороны.
  • 3
    ответ дан 1 December 2019 в 14:46
    поделиться

    Хранимые процедуры и представления являются Вашим другом здесь. Даже если система не использует их, изменяет его для использования их, то осуществляет рефакторинг базу данных внизу.

    Ваши получения и поставки затем становятся представлениями.

    Остерегаются, получения и поставки являются на самом деле двумя совсем другими зверями в большинстве систем, с которыми я работал. Получения связаны с поставщиками, в то время как поставки связаны с клиентами (или customer/ship-to местоположения). На уровне материально-технических ресурсов они часто представлены то же.

    1
    ответ дан 1 December 2019 в 14:46
    поделиться

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

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

    я рекомендовал бы внести изменения постепенно и сделал бы большое интеграционное тестирование. Трудно сделать, значительное реконструирует, не представляя несколько ошибок.

    0
    ответ дан 1 December 2019 в 14:46
    поделиться

    Я не думаю его очевидное, что идентификатор таблицы транзакций должен быть внешним ключом или к ReceiptInfo или к ShipmentInfo. Думайте наоборот. В объектно-ориентированной модели у Вас должны быть таблица транзакций и ReceiptInfo, или ShipmentInfo должен иметь внешний ключ к таблице транзакций. Если Вы будете удачливы, то будут только 1 или 2 точки в коде, где новые записи в ReceiptInfo или ShipmentInfo сделаны. Там необходимо добавить код, где Вы добавляете запись в Таблице транзакций и после этого создаете запись в ReceiptInfo или ShipmentInfo с внешним ключом к Транзакции.

    0
    ответ дан 1 December 2019 в 14:46
    поделиться

    Первая вещь состоит в том, чтобы создать схему таблицы. Я уже сделал это для Архитектора Предприятия использования Унаследованной базы данных. Можно выбрать DB, и он создаст Вас каждый таблицы/поля. Затем необходимо будет разделить все в категориях. Exemple все Ваш получают и поставляют продукты вместе, клиентский материал в другой категории. После того как все, разрешают, Вы сможете осуществить рефакторинг поле путем составления новой таблицы, нового releashionship и новых полей. Конечно, этому будет нужна партия изменения, если ко всему получат доступ без Хранимой процедуры.

    0
    ответ дан 1 December 2019 в 14:46
    поделиться

    Иногда можно составить новые таблицы, которые имеют лучшие структуры и затем создают представления с названиями старых таблиц, но основаны на данных в новых таблицах. Тем путем Вы кодируете, не повреждается, в то время как Вы начинаете перемещаться в лучшую структуру. Будьте осторожны с thsi, хотя, поскольку иногда Вы отходите от нереляционного стола к реляционной структуре, где у Вас есть несколько записей, в то время как код будет ожидать только один. Это particulalry верный, если у Вас есть разработчики, которые используют подзапросы.

    Затем, поскольку каждая вещь изменяется, она переедет от представлений до реальной таблицы. В конечном счете можно отбросить представления. Это, по крайней мере, позволяет Вам работать инкрементно для хранения вещей, работающих, поскольку Вы перемещаете материал, но начинаете чинить вещи использовать лучший дизайн.

    0
    ответ дан 1 December 2019 в 14:46
    поделиться
    Другие вопросы по тегам:

    Похожие вопросы: