commentテーブルの複数モデルへの追加について

commentテーブルを複数のモデルに対して追加したいとき、それぞれのモデルに対してコメントテーブルを作成するのか、それとも共通のコメントテーブルを一つ作って複数モデルと関連づけるのか、どれがいいのか考えた。

3案

案1

モデルごとにカラムを追加

案2

ポリモーフィック関連でカラムは増やさないがcommentテーブルは共通で使用する

案3

モデルごとにcommentテーブルを作成

どれがいいのか

この3パターン。

1はまあ無し。コメント追加をしたいモデルが増えるごとにカラム増やすとかまあないだろう、と。

で、1よりは2は全然あり。 ただ、今後コメントを追加したモデルが必要なくなる可能性や複数テーブルのコメントが局所に集まるので、もしコメント数の少ないモデルがあったとしてもコメント数の多いモデルにパフォーマンスが依存してしまうような可能性もある。 ということで、3がベターなのではないかというのが今日のところ。

ただ、t_wadaさんに『SQLアンチパターン』の6章を読みなされと助言をいただいたので即電子版を購入した。読み損ねてたので良い機会でした。

ということで読み終えたら、いまの考えが変わるかもしれない。

それにしても、twitterで質問したら結構なスピードで返答がくるし、精度をあげていけば社内IRCなんかより助かるかもしれないなーなどと。