正規化のメリットを無視した作業をしたよ

チラシの裏

リレーショナルデータベースの正規化のメリットを無視した作業をした時のメモなのです。

ある日のデータ移行後、マスタのリレーションIDも変わっていました。
old master

id name
1 A
2 B
3 C

new master

id name
1 C
2 A
3 B

こんな感じに。
newマスタのレコードはすでに運用中なので、nameの値を変更することは厳しいです。
なので、移行したローデータのIDを修正することにしました。

update hoge set id = new_id * 100 where id = old_id;
update hoge set id = new_id * 100 where id = old_id;
…

new_id * 100のIDで更新。こうしないと、古いIDと新しいIDが混じってしまう可能性があります。

update hoge set id = id / 100;

で新しいIDに更新。

ちょっと、めんどくさかったです。