1

activerecord は、新しく作成されたレコードにどのように ID を割り当てますか? ID値はいたるところにあるようです。シーケンシャルな場合もあれば、ある種のハッシュのように見える場合もあります。行動を制御する方法はありますか?

4

1 に答える 1

1

リレーショナルデータベース内では、IDは通常シーケンシャルであることがわかります。idこれは、Railsを使用するこれらのデータベースでは、デフォルトで自動的にインクリメントされるフィールドです。これは99%のケースです。つまり、99%の確率で、このように実行されることが期待できます。それは正気の方法です。

ただし、データベース内の「id」フィールドが自動的にインクリメントされず、代わりに文字列になる場合があります。現在使用しているデータベースでは、idフィールドはと呼ばれclient_id、「RAB001」などの6文字の文字列であり、コード自体によって手動で割り当てる必要があります。これは、私たちがサポートしているレガシーシステムによるものであり、それを修正するためにできることは何もありません。それはまさにそれです。

Mongoidなどの他のデータベースでは、IDは再び自動的に生成されます。ただし、ここには違いがあります。自動的に数値をインクリメントするのではなく、ハッシュです。私がたまたま便利なMongoデータベースでは、オブジェクトの_idフィールドの1つ(アンダースコアに注意)は、この素敵で理解しやすい1つのハッシュです4e22b5812f8b7d6f6d000001。これはMongoによって自動的に生成され、オブジェクトを見つける必要があり、別の一意の値でそれを見つける他の方法がない場合を除いて、それが何であるかはあまり気にしません。

PostgreSQLやMySQLなどの従来のデータベースシステムによって提供されるものであれ、Mongoによって提供されるものであれ、自動生成されるIDシステムを使用することをお勧めします。

レコードの主キーを手動で生成する必要があるシステムには、巨大な「HERE BE DRAGONS」ラベルを付ける必要があり、ニトログリセリンの場合のように、またはこの適切なアナロジーと同様に処理する必要があります。可能であれば、このシステムは避けてください


1私はここで皮肉を言っています。

于 2011-07-18T23:28:56.693 に答える