やや重要な欠陥があるデータベース設計を継承しました。コア テーブル (他のテーブルの約半分によって参照され、その多くはそれをチェックする制約があります) の主キーは varchar(20) です。
これは少し頭を悩ませましたが、その背後にある理論的根拠は理にかなっています。数値 (これまで常に数値でした) は、2 つのデータ フィールドの組み合わせ (組み合わせたときに一意であることが保証されています) ですが、多くの場合、1 つ以上の 0 で始まります。
この問題を解決するためのより良い方法があると確信していますが、データベース スキーマの完全な変更は現時点では範囲外です。
問題は、25 文字の組み合わせ ID を持つ新しいクライアントがいるということです。
このクライアントのサイトのデータベースを作成したとき、すべてのフィールドを更新しました。これにはほとんど 1 日かかりました。テーブルの作成/変更レベルで SQL を使ったことはあまりありません。このフィールドを参照するテーブルはおよそ 25 あります (そして、その値を各テーブルには、テーブルを編集できるように削除する必要がある多数の制約があります。
合計すると、1 つのデータベースを更新するのにほぼ丸 1 日かかりました。長くて退屈な作業でしたが、たった 1 つの入力ミスでデータベース スキーマが壊れてしまう可能性がありました。テーブルから正しい順序で制約を削除し、すべてのフィールドを更新し、すべての制約を再度追加するスクリプトを作成する必要がありました。
これを行う簡単な方法はありますか?20 ~ 25 個のテーブルの外部キーでもある主キーのフィールド長を変更する必要があり、約 8 つの異なるデータベースに対してそれを行う必要があります。制約はデータベースごとに微妙に異なる名前を持っているため、その 1 つに対する私のスクリプトは他のものでは機能しません。