RubyOnRails と複合キー
2006/08/19 の記事なのだけど・・・。
RubyOnRailsで驚きなのが、複合キーを持つDAOは作れないという話。
【感想】RubyOnRails 勉強会@関西とデータモデリング: プログラマの思索
渡辺さんは、在庫テーブルのように、品目CDと倉庫NOを主キーに持つテーブルが作れないのは痛い、と言っていたがまさにその通り。
そのために、変換テーブルを用意して、N対Nで関係付けるようにするとか話が出ていたが、大丈夫か?
との記事に対してのコメントが、
Railsを使うなら、モデルはRubyで表現する。DBはそのスナップショットを置いておくだけで、キーはただのID。意味(在庫は品目と倉庫で管理して、他の入庫日などとはかかわりなく1意になる、とか)のあるキーを使うなんてもっての他です。
DOAでいくなら、ERにすべてのモデルが表現されていて、DBの外にモデルがあるなんてもっての他。それはちゃんとデータモデルに表現されているべきものです。
と考えると、相容れなくて当然なのかなぁ、と思う今日この頃なのでした。
【感想】RubyOnRails 勉強会@関西とデータモデリング: プログラマの思索
なるほど。
なお、
もし,単純に一意制約を設定したいのであれば,主キー以外にユニークな制約(索引)を作ればいいだけだと思います.(ちなみに,idのような単なる連番のようなキーを「代理キー」といい,DAOでも普通のテクニックのはずです)
【感想】RubyOnRails 勉強会@関西とデータモデリング: プログラマの思索
と考えると、別にそんなに大きな縛りでもないのかもしれない。