データベース関係のネーミングメモ

2008/01/24

この頃,データベースの命名規則を考えています。新しく考えているわけではなくて,調べてるだけなんですけどね。こゆのは,いろいろなところで標準化の指針が出ているので,目についたものを訳しつつメモ。

  • スタイル

    1. 小文字を使う

    2. 単語や接頭辞はアンダーラインで区切る,空白は使わない

    3. 番号(数字)は使わない

  • テーブル名

    1. 短く曖昧でない名前を選ぶ,せいぜい1語か2語程度

    2. 単数形を使う,複数形はだめ

    3. lookup table(訳注:内部コードと表示文字列の対応表とか)には関連するテーブルの接頭辞をつける

    4. 連結用のテーブル(訳注:多対多のテーブルをつなげるための中間テーブル)には,連結するテーブル名をつなげる。※ただし中間テーブルに明らかな意味がある場合は例外。

    5. (一般的な lookup table を連結するための連結用テーブルはどうしようかね?)

  • フィールド/カラム名

    1. 主キーはテーブル名に"_id"の接尾辞をつける

    2. すべてのフィールド名にテーブル名の接頭辞をつける(ただし外部キーは除く)

    3. 外部キーの名前は参照するテーブルの主キーと同じ名前にすべき

    4. DATE型には"date_"の接頭辞,BOOLEAN型には"is_"の接頭辞をつける

うーん……これはちょっと一般的ではないかなぁ。テーブル名には複数形を使うのが,どちらかというと一般的だと思うし(RoR もそうだった気がする),DATE型に"date_"の「接頭辞」をつけるのには抵抗があります。date は接尾辞だろう。

個人的には,コード(CODE/CD)はテキスト型,ID はシーケンシャルで一意なNUMBER型,みたいな決まりごとを作っていたりします。ID をサロゲートキーにして,コードは一意になっても主キーにしない。

ストアドプロシージャなんかの名前も含めたもっと細かい標準は,上のページからもリンクしている「DevCampus Database Naming Conventions - Jason Mauss' Blog Cabin」あたりが参考なりそうな感じです。こっちはテーブル名に複数形を推奨しているみたい。

命名規則はちゃんと決めておかないと,ボディブローのようにじわじわとダメージになっていきます。特に問題だと思うのは,プロジェクトの途中から入ってくる人が,テーブルどうしの関係やフィールドの意味を自分で学習できないこと。当初から関わっている人のノウハウとして蓄積されちゃうもんだから,その人に聞かないと分からない,なんてことがよくあります。当初から関わっている人も,周りがついてこられないせいで,自分自身の負担をなかなか軽減させられません。まぁ,自業自得なんですが。

これを機会に,ちょっと自分でもそれっぽいルールを作っておこうかな。

Site Navigation
SNS Accounts (@aian)

普段はここら辺に住んでいます.