11704
一般的には以下の命名が通例かと思われます。  
国内のみの利用ですので日本語での命名についてはご容赦下さい。

テーブル名： **商品マスタ** または 商品テーブル  
フィールド： **商品コード** ,商品名,単価

熟練した方からの命名提案  
テーブル名： **商品**  
フィールド： **商品** ,商品名,単価

利点として  
マスタという言葉が冗長であるので省略できる  
コードという言葉が全てのテーブルに出てくるので省略可能である  
プログラム側で入力文字数の削減が可能である

英語であればitem **s** とSを付けてテーブル名を作成することが可能ですが、  
テーブル名が商品だけですと違和感を感じてしまいます。  
日本語ですと商品群というイメージしにくいテーブル名になってしまいます。

～コードを省略することについても、実際に商品コードは想像できても  
商品というフィールドから商品コードは想像できないような気がします。

皆様の現場ではテーブルとフィールドにどのような命名を行っていますでしょうか。
CC BY-SA 3.0
2015-06-25T02:14:59.137
11702
2015-06-26T21:24:54.680
2015-06-26T21:24:54.680
7462
7462
question
sql
SQL テーブル フィールド 命名規則について
個人的な意見ではありますが、テーブル名で"商品"を示しているので、商品の属性であるカラム名には、"商品"をつけないで定義します。

  * 商品テーブル 
    * コード
    * 名称
    * 単価

という感じでしょうか。

ただしRDBを使う都合上、1つのテーブルに他のテーブルのコードを持つこともあるでしょうから、その時は"他テーブル名"＋"コード"としています。

テーブル名に「テーブル」をつけるか否かについては、私は「つけるべき」と思っており、RDBを使うシステムでは、たいていテーブル以外にもビューを使うことも少なくありませんので、つけております。

ご参考になれば幸いです。
CC BY-SA 3.0
2015-06-25T02:31:18.673
11704
2015-06-25T02:31:18.673
5778
11702
answer
PKeyとなりうる商品コードは他のテーブルに外部キーなどで値がコピーされていくため、  
テーブルと独立して識別できるべきものです。省略はしません。

テーブル名： **商品**  
フィールド： **商品コード** , 商品名, 単価

とします。
CC BY-SA 3.0
2015-06-25T03:58:12.317
11707
2015-06-25T03:58:12.317
8431
11702
answer
基本的な考え方は

テーブル名：そのテーブルが何の集合かを示す  
フィールド名：テーブルに含まれる個々の対象の属性を示す  
でしょう。なので素直には

テーブル名:商品  
フィールド名:コード、名前、単価

となります。少なくともSQLの文脈上ではこれで十分に誤解無く識別できます。

テーブル名に「テーブル」とか「マスタ」とかつける文化もありますが、その場の文化の話なのでお好きにどうぞと言う話になります。

英語の"item"
"items"の対比から「商品」「商品群」とすべし、というのは、日本語では単数複数の区別をしないので同じ理屈でどちらも「商品」とすべきとも言えるのであまり理由にならないでしょう。「テーブル」などとおなじ接尾辞の一種としてそれをつけるなら上記と同じく「お好きにどうぞ」という話です。

フィールド名について、特に主キーについては、

  * JOINの結合条件指定でONが使えるので一意とすべき
  * 主キーはすべて「ID」「コード」としたほうがわかりやすい

という相反するがどちらももっともな理由があるので、どちらを選択するかはこれも文化の話になります。

主キー名が`商品`というのは、属性を表してないのでこれは明らかにおかしいと言えます。

他のフィールド名について、「一意となる名前がよい」という主張もありますが、これを突き詰めると`テーブル名+属性名`、例えば`商品_名前`のような命名規則になってしまうのであまり意味がないと思います。

`商品名`については、日本語的には十分簡潔なので、`名前`ではなく`商品名`を使うのにはあまり違和感がありません。その場合は他のテーブルでも同様に「○○名」を使うようにすべきです。統一できないのなら`名前`にしたほうがよいでしょう。また、`単価`を`商品単価`とするのは冗長です。
CC BY-SA 3.0
2015-06-26T00:28:18.783
11743
2015-06-26T00:28:18.783
5793
11702
answer