rails で複数カラムプライマリキーは推奨されない?
active_record で複数カラムプライマリキーを利用しようとすると、以下のように怒られます。
WARNING: Active Record does not support composite primary key.
order_history has composite primary key. Composite primary key is ignored.
これの結果として何が起こるかというと、 find メソッドなどが利用できなくなります。
すべてのテーブルは単一 PK にしてしまえばいいかとも思いますが、少し考えると、確かに複数のコードによって PK にしたくなるようなテーブルはあるかなと思っています。
少し考えてみた具体例、もうちょっといい例があるかもしれませんが。。:
- 外部アカウント管理テーブルにて、「外部サイトコード」 + 「外部サイトで利用しているアカウント名称」
ここまで考えて、これから rails でアプリケーションを開発していくとした場合に、以下の疑問が発生しました。
質問
- rails 的には、これからテーブル定義を作っていく段階においては、複数カラムプライマリキーのテーブルは作るべきではないのでしょうか?
- 逆に、複数カラムプライマリキーが自然だと考えられるテーブルをあえて id カラム追加して普通の単一プライマリキーテーブルにするにあたって、何かデメリットなどは考えられますか?
- あるならば、どういう性質をもったテーブルだとそのデメリットが発生しますか?