2011-11-07 16 views
0

私のデータベースでは長い乱数を主キーとして使用したいと考えています。私はmysqlとdoctrine2を使用しています。ランダムIDを取得する方法

これを巧妙な方法で行うにはどうすればよいですか? mysqlストアドファンクションを作成していますか、またはモデル関数を作成する必要がありますか?

私はIDがユニークである必要があるため、データベースに近いところで作業する方が良いと思っていたので、mysqlがうまくいくと思いました。どう思いますか?

+0

:新しいテーブルの

:既存のテーブルのための

CREATE TABLE table_name ( id INTEGER AUTO_INCREMENT PRIMARY KEY ) 

GUIDを使用していますか? –

+1

通常のauto_incrementing IDの使用を検討し、mysqlでいくつかのパディング/ソルトと 'aes_encrypt()'を使用して、ランダムなルッキングキーを生成してください。エースのバージョンはガベージのように見えますが、必要に応じてオリジナルの簡単な数字キーに簡単に戻すことができます。 –

+0

私の質問への答えが何であるかわからないので、私はちょうどポイントを広げています。あなたはどこでも役に立つ。私の質問はそうではなかったようです。 – PiTheNumber

答えて

2

UUID()を使用してください。

+0

UUIDは良いアイデアですが、私の見た目が好きではありません;)私はMarc Bの提案と一緒に、パブリックIDをseperatlyでハッシュ関数で生成すると思います。それでも、UUID()は役に立ちます。 sha1(UUID()+ primary_id)のようなもの – PiTheNumber

+0

mySQLはUUIDを文字列として、またはByte [16]として内部的に格納しますか?私がUUIDを使うのはちょっと不思議ですが、私はPostgresの人間です。 –

1

私はmysqlユーザーではありませんが、LONG番号のストレスを追加する理由は私には興味があります。

私の周りを検索し、mysqlデータベースの一意のIDフィールドとしてこれを見つけた:あなたは考えがあり

ALTER TABLE table_name ADD COLUMN id INTEGER AUTO_INCREMENT UNIQUE KEY; 
+1

自動インクリメントされたIDの問題は、それらを推測できることです。それは、Facebookのような大きなページがすべてのオブジェクトに対してランダムなIDを使用している理由です。 – PiTheNumber

関連する問題