データ モデルを反映しなくなった従来のデータベース スキーマにとらわれていることは、すべての開発者にとって悪夢です。しかし、保守性のためにコードをリファクタリングするという話が飛び交っていますが、古いデータベース スキーマをリファクタリングするという話はあまり聞いたことがありません。
古いスキーマに依存するすべてのコードを壊すことなく、より良いスキーマに移行する方法に関するヒントは何ですか? 私は自分の要点を説明するために特定の問題を提案しますが、役立つことが証明されている他のテクニックについても気軽にアドバイスしてください。それらも役立つ可能性があります。
私の例:
私の会社は製品を受け取り、発送します。現在、製品の受領書と製品の出荷には、いくつかの非常に異なるデータが関連付けられているため、元のデータベース設計者は、受領書と出荷用に別のテーブルを作成しました。
このシステムを使って 1 年が経ちましたが、現在のスキーマはあまり意味がないことに気づきました。結局のところ、受け取りも発送も基本的には取引であり、それぞれ商品の金額を変更する必要があり、基本的には +/- 記号だけが異なります。実際、一定期間にわたって製品が変更された合計量を見つける必要があることがよくありますが、この設計では非常に扱いにくい問題です。
明らかに適切な設計は、ID が ReceiptInfo または ShipmentInfo テーブルのいずれかの外部キーである単一の Transactions テーブルを持つことです。残念なことに、間違ったスキーマが既に数年間運用されており、数百のストアド プロシージャと、そこから書き出された数千行のコードが含まれています。では、スキーマを正しく機能するように移行するにはどうすればよいでしょうか?