2007/09/11

データベースのプライマリーキー

たとえばフォルダという概念のデータベースがある場合、フォルダにはさまざまなデータベースがぶら下がる事ができる事は簡単にわかると思う。

そこで主キーをIDなどを利用して、フォルダデータベースで利用されているIDは登録できなくするなんてこともするが、私の場合は常にプライマリーキー=autoincrementなもんで、競合するIDが続々出現しているわけだ。

この理論に対抗するためには、各データベースの登録予想最大数を決めておき、十分なスペースをあけて、autoincrementの開始値を重複しないように工夫する。

なんてことも今だけの回避策なので、隙間なくautoincrement番号でフォルダデータベースという、区分を使いこなしたい場合は、フォルダキーテーブルを作る。

フォルダにぶら下がる可能性のある輩たちはこのフォルダキーテーブルを通して、autoincrement番号を配布していただくわけだ。

はっきりいってこれを今使ってみたりしたが、かなりめんどくさい。

フォルダのように矛盾の生じないテーブルに対して行う分にはある程度の慣用度があるように、私個人的には感じるが、共用したいが関連性の薄いテーブルの組み合わせの場合は、なんとなく作る事がおっくうになってしまう。



その他にこのような共用利用される可能性の高いテーブルでいくと、利用する画像を登録しているテーブル。

商品や伝票やメッセージから参照される可能性があり、番号が重複するわけにはいかないが、ほぼ同じ構造の追加テーブルを各地に作るか、共用するしか管理方法が難しい。

1 件のコメント:

  1. 概念的で散文で役に立たない文章になったので満足している。

    返信削除