データベースを設計する際に、


・テーブル名
・カラム名

を決定します。

その際の、命名規則で悩んでいます。

例えば、ユーザテーブル「user」内に、
ユーザID「user_id」があるとします。

別テーブルにも、ユーザIDをユニークとしたカラムがある場合、こちらも「user_id」とするか、「テーブル名_user_id」にするかで悩んでいます。

今まではカラム名はかぶらないように全て変えていましたが、実際に運用されている方はどのようにしているのか気になりました。


この場合、どちらのほうがいいのでしょうか?

回答の条件
  • 1人5回まで
  • 登録:2007/05/23 07:45:04
  • 終了:2007/05/30 07:50:03

回答(4件)

id:b-wind No.1

b-wind回答回数3344ベストアンサー獲得回数4402007/05/23 07:51:06

ポイント23pt

同じものを指しているカラムは出来るだけ同じ名前にしています。

その方が分かりやすいし、大抵そういうのはテーブル結合のキーになるので、JOIN A,B USING ON ( ... ) でまとめられるので、都合がよいのです。


同じものを指していないのなら別の名前にすべきでしょうけど、今回の場合ユーザーIDとの事なので同じでいいように思います。


あと、別の名前にするときも「テーブル名_user_id」はうまくないですね。

意味が分かりにくいし、テーブル名付きで参照する時に「テーブル名.テーブル名_user_id」になってしまい情報が重複しています。

id:onigirin

ありがとうございます。

同じものを指すときは、同じ名前が便利なのですね。

「テーブル名_user_id」はやはりまずいですか・・・。

今見ていたオープンソースソフトがこれだったので試してみようかと思っていましたが、

そういわれてみれば確かに重複していますねぇ。

2007/05/23 08:13:44
id:memo77 No.2

memo77回答回数238ベストアンサー獲得回数202007/05/23 08:10:48

ポイント23pt

意味を正確に表す名前にします。その結果としてカラム名がかぶるなら、かぶってもよいのでは。

例えばレコードの更新ユーザーであれば、私は同じ名前にします。

あとデータベースがわかりませんが、SQLServerだとuser_idは関数名としてあるので、[]でくくれば列名としても使えますが、避けたほうがよいと思います。

id:onigirin

ありがとうございます。

見てわかる、ということを第一に設計されているのですね。

テーブル名・カラム名の混乱はなくなりそうですね。

データベースはMysqlの予定です。

関数名にひっかかりそうなものも注意ですね。

2007/05/23 08:26:36
id:samasuya No.3

samasuya回答回数315ベストアンサー獲得回数112007/05/23 08:42:55

ポイント22pt

ぼくの感覚でいくとシステム内で同じ値を指すのであれば、

カラムは同じにします。

たとえば、ユーザーマスタと、注文情報データがあって

どのユーザーがどの注文をしたか?というのを考えるときは、

両方のテーブルでユーザーのIDを示すカラムは、同じ名称に

すると思います。


というか、データベース設計するときに、主キー、外部キー等を

考えると同じにしとかないとややこしいですけどね。


全然違う管理をするユーザー情報なのであれば、

別名にしますけど・・・。


たとえば、何かのサービスをWEBシステム上で提供していて

そのログインユーザー(お客様情報)と社内システムの

ログインユーザー(社員情報)で、両者をユーザーとする

場合などです。

id:onigirin

ありがとうございます。

やはり同じものを指す場合は、

同じカラム名がよさそうですね。

少し安心してきました。

2007/05/23 08:51:23
id:YasudaS No.4

YasudaS回答回数351ベストアンサー獲得回数52007/05/23 09:02:43

ポイント22pt

そのuserの意味に依存すると思います。

たとえば、課金用のuserと、システムへのログイン用userで内容が異なる場合、user_kakin,user_login等と名前をつけます。

また、UserIDとUser名等で、数値/文字列で型が違う場合にも名前を違うモノとして扱います。

また、user等といった「何のユーザなんだ」とすぐにわからない様な短い名前は避けます。

ABCシステムの課金用ユーザのテーブルなら、kakin_ABCテーブルという名前のテーブルに、UserID_int_kakin_ABC (ID用) UserName_str32_kakin_ABC(ユーザ名)という風につけます。

こうしておいておくことで、XYZシステムと統合する時に、UserID_int_kakin_ABC =UserID_int_kakin_XYZ等と明確にわかるコードで記述することが出来ます。

id:onigirin

ありがとうございます。

型もカラム名に入れるというのは初めて知り、とても新鮮でした。

「はてな」のように、基本となるユーザテーブルを用意し、そこからテーブルを広げようと設計していました。

この場合「ユーザid」に英数字を入れて、これを主としてDB全体のモトにしていそうですね。

2007/05/23 09:30:49

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません