idじゃないアイディーを使いたい!

Ruby on Railsのモデル(RDBのテーブルをクラスにマッピングしたやつ)は簡単に外部キーとか使えてうれしいんだけど(しかも_idが末尾につくカラムは勝手に外部参照扱いしてくれる)、参照先のidは整数じゃないといけないという制限がある。さらにいえばpostgesでいうところのserial型のようなDBが生成した値であることが暗黙のうちに期待されている。ところが世の中「一意なことが自明だからわざわざDBに作ってもらう必要がない」って前提のDBはいくらでもある。例えば社員DBにおける社員番号とか。あと辞書的に使われるテーブル(都道府県データとか)なんかもそんな設計が多いでしょう。こういうテーブルを外部参照したいときはどうすればいいんだろう。
http://wota.jp/ac/?date=20061119#p03では、ActiveRecordにパッチを当てて拡張しているけど、プラグイン(acts_as_一族)だったりするとうれしいな。
【追記】この方法はPKじゃないユニークなコードに対して外部参照できるようにARを拡張するものです。
http://capsctrl.que.jp/kdmsnr/diary/20060530.html#p01では、変化が無くてあまり大規模でもないデータについては、RDBを使わずモデル内の定数として記述している。納得です。刻一刻増加するようなデータにidをつけるのも納得。でもその中間ぐらいの「硬さ」のデータのうまい扱い方を知りたい。
くまくま〜でも言及されてますが、参照されいる側のidって行を削除してaddしなおしたらもうずれちゃうわけで、ちょっと怖い。

【追記】Agile Web Development with Railsを読んで真面目に調べてみた

class Book < ActiveRecord::Base
    set_primary_key "isbn"
end

こうすれば任意のPKを指定できる。set_primary_key て指定した場合は,PKの名前や型の制限がなくなる代わりに,PKをDBに設定するのもプログラマの責任になる。つまり整数以外のPKが使えるが,それが一意であることにプログラマが責任を持つ必要がある。
またbelong_toメソッドのパラメータ(Hash)で以下のようにすると,任意のテーブルの任意のカラムへ任意の名前で外部参照を設定できる。

belong_to :book_info,
          :class_name => "Book",
          :foreign_key => "isbn"

この2つが使えれば大体しのげる?