smellman's Broken Diary

クソみたいなもんです

いらなくなったテーブルってどうする?

素朴な疑問なんですが。
時々、アプリケーションで使ってるDBのテーブルで、まるごと要らなくなってしまって消したいなぁっていう状態のものが出てきたりします。
でも、そういうテーブルってどう対処するのが良いのでしょう?
いちおう考えたのは以下の三つ。

  1. Modelを消しておいて放置する
  2. self.upでdrop_tableするmigrationを書く
  3. Modelを消して、かつテーブルの名前を変更するmigrationを書く

一つずつ長所短所をまとめてみた。

Modelだけ消しておいて放置する

この方法だといちおうアクセス自体はできなくなるんだけど、時々SQLを直接書いてあったりするケースの時に困ったりする。
利点として元に戻すのがかなり楽ではある。

self.upでdrop_tableするmigrationを書く

この方法が一番素直な方法だと思います。テーブルが要らなくなったので削除しますと明確に意思表示もできますし。
ただし、self.downでcreate_tableをしないといけないという間抜けな事にもなりますし、self.downが走った段階で前に入れていたデータが無くなっているというのもちょっと微妙な気がします。

Modelを消して、かつテーブルの名前を変更するmigrationを書く

現実的な対処としては一番利にかなってるような気がするのがこの方法かなって考えている。
ポイントとしてはデータが残り続けるので後でやっぱり使う!ってなった時でもすぐに戻せます。
ただ、hogesテーブルをunused_hogesテーブルに変更したとして、テーブルの一覧を見るとよくわからないテーブルがあるぞって事で混乱を招く可能性が高くなるかなぁと。なので、それなりにドキュメントとかを残す必要があるのが悩ましい。

とりあえず、今回は一番最初の方法で放置プレイまではやってみたんだけど、どうもいい方法が思い浮ばなくて悩み中。もうちょっとスマートな何かってないのかな?