RubyOnRails と複合キー

2006/08/19 の記事なのだけど・・・。

RubyOnRailsで驚きなのが、複合キーを持つDAOは作れないという話。
渡辺さんは、在庫テーブルのように、品目CDと倉庫NOを主キーに持つテーブルが作れないのは痛い、と言っていたがまさにその通り。
そのために、変換テーブルを用意して、N対Nで関係付けるようにするとか話が出ていたが、大丈夫か?

【感想】RubyOnRails 勉強会@関西とデータモデリング: プログラマの思索

との記事に対してのコメントが、

Railsを使うなら、モデルはRubyで表現する。DBはそのスナップショットを置いておくだけで、キーはただのID。意味(在庫は品目と倉庫で管理して、他の入庫日などとはかかわりなく1意になる、とか)のあるキーを使うなんてもっての他です。


DOAでいくなら、ERにすべてのモデルが表現されていて、DBの外にモデルがあるなんてもっての他。それはちゃんとデータモデルに表現されているべきものです。


と考えると、相容れなくて当然なのかなぁ、と思う今日この頃なのでした。

【感想】RubyOnRails 勉強会@関西とデータモデリング: プログラマの思索

なるほど。


なお、

もし,単純に一意制約を設定したいのであれば,主キー以外にユニークな制約(索引)を作ればいいだけだと思います.(ちなみに,idのような単なる連番のようなキーを「代理キー」といい,DAOでも普通のテクニックのはずです)

【感想】RubyOnRails 勉強会@関西とデータモデリング: プログラマの思索

と考えると、別にそんなに大きな縛りでもないのかもしれない。