• ベストアンサー

カラム名の付け方

さっそくですが質問です。 データベースのカラム名の付け方についてなんですが 会社等で設計する時は、ルールに従ってカラム名等を 付けると思うんですが 個人で、自由に付けてもいい状態になったとき どのような 名前を付けていいか迷っています。 例:postgres create table movie( id serial primary key, title text ); か create table movie( movie_id serial primary key, movie_title text ); の二つのやり方か別の名前の付け方がいいのか 迷っています。 アドバイスがあったらよろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • togino
  • ベストアンサー率75% (97/129)
回答No.5

明確な回答というものがないのですが 私は以下の点に注意して名前をつけています。 ■ 対象を正確に表現しているか 例えばタイトルを表しているなら title のように 勝手に til みたいに略したり関係ない名前をつけない ■ 型を表現しているか 最近は型を意識しない言語が増えてきましたが SQL だと '' で囲む必要があるのかないのかを カラム名で確認できるようにすることもあります。 ■ 変数名が長すぎないか 上記の条件を満たすとなるとだんだん長くなります。 やはり長すぎると SQL だって長くなり見にくくなって しまっては、意味がありません。 ■ 別の名前空間に同じ名前が存在しないか 名前空間を分けて同じ名前を使うことは、自由に 名前をつけれることや、綺麗に対比させることが できるので見やすくなりはするのですが、 名前空間を付け忘れて、違う変数にアクセスしていた ということが起こらないとも限りません。 ■ 列挙した時に綺麗に並ぶか 英語と日本語の違いが原因になることもありますが shop_view という変数を考えた場合、他に item_view custom_view のように変数が増え、view するもので まとめたい場合 view_shop ってしておいた方が 列挙した場合ソートするだけで、綺麗に並びます。 ■ 大文字小文字を使うか 大文字小文字が使える場合 MovieID ってした方が 変数名は短くなって nMovieID のように型修飾も しやすくなります。_ の方が見やすいって人もいる ので、かなり好みだとは思いますけど・・・ --- すみません。長々普段変数名をつける時に結構 悩むタイプなので、気にしていることを列挙してみました。 なにか参考になればいいと思います。 結局私なら CREATE TABLE movie (  movie_id SERIAL PRIMARY KEY,  title TEXT ); にしますね。 (SQL 予約語は大文字とか変なこだわりがありますが・・・) # 変数名やカラム名・関数名なんかは最初に適当に決めて # 必要に応じて一斉置換できるもんだといいのになぁ # まっその名前をデータにすることもあるので不可能 # なんだけど・・・(^^;)

maruchan0488
質問者

お礼

アドバイスありがとうございます。 勝手に注意点を上から番号振りました。 注意点 1 これはそうですね DBに限らず 注意点 2 これもプログラムを作るときに 変数名に付けている人をたまに見ます。 注意点 3 変数名が長いと起こられる言語もありましたしね。。。 注意点 4 同意 注意点 5 そうですね 注意点 6 出来れば私も nMovieID の書き方のほうがしっくりきます。

maruchan0488
質問者

補足

皆様たくさんのアドバイスありがとうございました。 いろいろ意見を頂いて 大変勉強になりました。 今回の設計では、toginoさんのカラム名の付け方で いこうと思いました。 これにて 勝手ながらこの質問を締め切らさせて頂きます。 ありがとうございました。

すると、全ての回答が全文表示されます。

その他の回答 (4)

  • root139
  • ベストアンサー率60% (488/809)
回答No.4

「エンティティや属性、リレーションの名称はモデル全体でユニークにする」というガイドラインが在るそうです。 私は、テーブル名を見ずに属性名だけを見て何の属性か判断でき、かつ全体でユニークになる様にしています。 ただし、外部結合の結合条件となるような項目で、曖昧になる可能性が少なく、同じにした方がかえって分かりやすいと思われるものだけは同じ名称にしています。 例えば、会員テーブルと購入履歴テーブルの双方にある会員IDの属性は同じ名称にしていますが、購入履歴テーブルの金額の属性と都道府県別送料テーブルの金額の属性は違う名称になる様にしています。

maruchan0488
質問者

お礼

アドバイスありがとうございます。 状況によって属性名を変えるんですか、、、 それが出来るようになれば 一番いいんでしょうが これには 経験が必要ですね わかりやすい例で 頭では理解しました。。。

すると、全ての回答が全文表示されます。
noname#86752
noname#86752
回答No.3

私なら前者を使うと思います。理由は短くて使いやすく、可読性も損なっていない(と私は思える)からです。 他にidが出てきたときは「テーブル名.カラム名」と指定できますし、どうしても分かりにくければselectするときにasで別名をつけてやることもできます。 カラムは必ずテーブルに属していて一緒に出てきます。ですので、無理にテーブル名を頭につける必要はないと思います。

maruchan0488
質問者

お礼

アドバイスありがとうございます。 いろいろ意見が聞けて楽しいです。 初めての 前者肯定派がいてちょっとうれしい 私も 「テーブル名.カラム名」 これがあるから カラム名は短くていいのかなぁ と思っていましたが 今のところ 少数意見のようです。

すると、全ての回答が全文表示されます。
  • Mizyu
  • ベストアンサー率41% (245/593)
回答No.2

カラム名でも変数名でも言えることですが、命名時に重要視することは 「後でその名前だけ見たときに何かが明確にわかること」です。 そしてカラム名、テーブル名となるとSQLが長くなってしまうことも考慮して 「できるだけ、簡潔に」という条件も重要視したいです。 前者は簡潔ですが、idだけ見たとき、何のIDかわかりません。 テーブルと紐付けてはじめてMOVIEのIDだと判断できます。 後者はカラム名だけで何のIDか判断できますし、 困るほど長い名前でもないですので、私は後者を推薦します。

maruchan0488
質問者

お礼

アドバイスありがとうございます。 確かに 変数名を付ける時は 必ずどんな変数なのかわかるように名前を 付けています。 話は変わりますが、、、 DBを オブジェクト指向的に考えた場合 名前の付け方は 前者の方が しっくり来るような気がします。 オブジェクト指向を本格的にやっていないので 自信はないですが、、、すいません

すると、全ての回答が全文表示されます。
回答No.1

私個人的には、後者です。 テーブルが複数になったら、IDというカラムがいっぱいできて、プログラムでわけわからなくなりますから^^;

maruchan0488
質問者

お礼

アドバイスありがとうございます。 そうですね IDはほとんどのテーブルにありますから

すると、全ての回答が全文表示されます。

関連するQ&A