tetsunosukeのnotebook

tetsunosukeのメモです

いざRuby On Railsでプロトタイピング

"いざRuby On Railsでプロトタイピング(@IT)"

ActiveRecord では主キーにidというカラムを使用します。システムの方でレコードを一意にするために採番したときの主キーを「サロゲートキー(surrogate key)」とか「人工キー(artificial key)」と呼びます。これに対して、顧客IDや商品番号などの、ビジネス上の意味から自然に一意となる値を主キーにしたものを「ナチュラルキー(natural key)」と呼びます(*2)。  ActiveRecordではサロゲートキーを採用しています。しかし設定によりナチュラルキーを使用することも可能です。大体の場合において、サロゲートキーを採用した方がシステムはビジネス上の仕様変更に強くなります。実システムにおいても、顧客からの要望が特になければ、サロゲートキーを採用することを考慮した方がよいと思います。(*3)

MySQLでDBを作っているとなんとなく読めてくるんだけど、特にIDが不必要なテーブル(だと思えたテーブル)に対してもIDを振っておいたほうがいいことがある。また、この辺は「名前重要」ってことになるんでしょうけど、例えばユーザ情報を格納するテーブルUSERがあって、そこには必ずUSERを一意に識別する「ユーザID」があるのだが、ActiveRecord的には

  • id, user_id, name, ...
  • userid, name, ...

と設計しておくのがどちらがラクなのだろう。

あと、これは参考になるなと思ったのが

viewから作成するとviewにどの情報を渡してやればよいか、どんな処理が必要かが明確になり、controller、modelが簡潔に実装できると思います。

なるほど。自分はいつも、PHPで書くときはcontrollerから書いています。しかしアプリケーションを作るときはだいたい画面の要件を順番としてつめていくので、この順番で作るのがよいのかもしれません。(まぁ、Controllerはそれらをつなげるだけだしな・・)