Будучи застрявшим с устаревшей схемой базы данных, которая больше не отражает вашу модель данных, каждый кошмар разработчика. Тем не менее, со всеми разговорами о рефакторинге кода для ремонтопригодности я не слышал много рефакторинга устаревших схем баз данных.
Каковы некоторые советы о том, как перейти к лучшей схеме, не нарушая при этом весь код, который опирается на старый? Я буду предлагать конкретную проблему, которую я должен проиллюстрировать своей мыслью, но не стесняюсь давать советы по другим методам, которые оказались полезными - они, вероятно, также пригодится.
Мой пример:
Моя компания получает и отправляет продукты. Теперь квитанция продукта и отгрузка продукта имеют некоторые очень разные данные, связанные с ними, поэтому первоначальные разработчики баз данных создали отдельную таблицу для получения и отправки.
В течение моего одного года работы с этой системой я пришел к пониманию того, что текущая схема не делает лизания смысла. В конце концов, как квитанция, так и отгрузка в основном являются транзакцией, каждый из них связан с изменением количества продукта, в основе которого только знак +/- отличается. Действительно, нам часто приходится находить общую сумму, которую продукт изменил за определенный период времени, проблема, для которой эта конструкция совершенно неразрешима.
Очевидно, что соответствующая конструкция должна состоять из одной таблицы транзакций с идентификатором, являющимся внешним ключом либо в таблице ReceiptInfo, либо в таблице ShipmentInfo. К сожалению, неправильная схема уже существует в течение нескольких лет и содержит сотни хранимых процедур и тысячи строк кода, списанных с нее. Как я могу перевести схему для правильной работы?