• ベストアンサー

テーブル設計で、項目名の付け方について迷っています。

テーブル設計で、項目名の付け方について迷っています。 いつもお世話になっております。 仕事で初めてテーブル設計を任されました。 今はマスタの設計をしています。 そこで、一つ質問があります。 得意先マスタと会員マスタがあって、両方のテーブルに 住所、電話番号があるのですが、この場合は普通、 S_TOKUI_ADDとS_KAIIN_ADD C_TOKUI_TELとC_KAIIN_TEL といった具合に、名前を変えるのが一般的でしょうか。 それとも、テーブルが違うんだから気にせずに S_ADDRESS、C_TELと同じ名前を付けるのが一般的でしょうか。 よろしくお願い致します。

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

  • ベストアンサー
  • mitoneko
  • ベストアンサー率58% (469/798)
回答No.3

 考え方としては、テーブルの設計書を見ただけで、それが何を表している項目なのかが解るのが理想です。(もちろん、備考欄・コメント欄に意味を書くのは無しと言うことで)  その上で、そのテーブルを利用してSQLを書く立場になれば、項目名は出来るだけ短い方がありがたいですよね。なにせ、SQL書くたびに毎度毎度その名前を書く羽目になるわけですから。  短すぎず、長すぎず・・・・この間で、苦悩するのが名前付けの作業です=^・。・^=  今回の場合、得意先の住所か、会員の住所かはテーブル名を見れば一目瞭然です。ですから、S_TOKUI_ADDのTOKUIは、長すぎの部類と思います。でも、ADDだけだと、動詞に取られかねません。S_ADDRESS当たりが無難なラインかと思います。C_TOKUI_TELのTOKUIも同じく長すぎの部類かな。TELだけで、まぁ誤解されるような用例もないですから、これはC_TELでも良いように思います。  多分、SQLを書く時には、テーブル名のエイリアスをつけて、TOKUI.S_ADDRESSの様に使うことが多いです。これが、TOKUI.S_TOKUI_ADDだと、得意先の意味がダブってますよね。やっぱり、タイプの無駄でしょう。

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

その他の回答 (2)

  • crossgate
  • ベストアンサー率65% (78/119)
回答No.2

それなら普通は同じ名前ですね。 テーブル名見れば区別できるし。

全文を見る
すると、全ての回答が全文表示されます。
  • crossgate
  • ベストアンサー率65% (78/119)
回答No.1

得意先と会員が全く関係ないものなら、普通は同じ名前じゃないかな。 SとかCとかの接頭辞は良く分からんですが。 あとは、得意先と会員で被ってるものがあるなら(そんなこと無いか)、同じデータを別テーブルで持つって言うのはダメだろうね。

pepepepepe
質問者

補足

Sは文字列(全角)で、Cは文字列(半角)という意味で、社内の規約です。 説明不足ですみません。 あと、得意先と会員でかぶることは無いです。

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

関連するQ&A

  • テーブル設計について

    会員制の小さなサイトを運営しています。 会員は会員IDで管理しているのですが、テーブル設計が適切であるか判断できず、助言を頂きたく書き込みさせて頂きました。 現在、会員情報テーブル(info)というテーブルが全ての基本となっています。 このテーブルには、会員IDの他、名前や性別、住所、自己紹介文などほとんど全ての会員情報が含まれています。 このほかに会員同士の交流用のテーブル(koryu)がいくつかあり、 そこには、会員IDとその会員が行った内容が記録されています。 で、現状、交流用テーブルを使用する場合、常に会員の名前を会員情報テーブルから引っ張ってきており、これが、処理的に重いのでは無いか、と思っています。 以下はたとえばの例ですが、  select koryu.id, info.name, koryu.contents from info,koryu where koryu.id=info.id のように、毎回、(ほぼ)名前だけを引っ張ってきています。 引っかかっているのは、この「名前だけ」というところで、例えば、会員IDと名前しかないテーブルを作成すれば、もしかしたら、処理が軽くなるのでは・・と思っているのです。 20カラムあるテーブルと関連付けを行う場合と、2カラムのテーブルと関連付けを行う場合、 2カラムのテーブルのほうが、処理は軽くなるのでしょうか?また、軽くなる場合、そうしたほうが良いのでしょうか? (現在、1000名くらいしか会員がいないため、処理が重いということは無いのですが、 安いサーバを使用しているため、処理はなるべく軽くしておきたいと思っています。) よろしくお願いします。

    • ベストアンサー
    • MySQL
  • テーブル設計について

    現在、会員情報を保持するのに会員テーブルを使っています。 このテーブル、もともと会員IDと会員の名前だけのカラム構成だったのですが、 住所やらメールアドレスやらが増え続け、現在20あまりのカラムになっています。(これらのカラムは部分従属も繰り返しもありません。) で、悩んでいるのが、カラムが多いと検索や読み出しの速度が落ちるのでは・・・。ということです。 そこでカラムの使用頻度の高いものと低いものでテーブルを分けようと思ったのですが、それはそれで速度が低下するような気がします。 (いちいち紐付けしなくてはいけないので・・・) テーブルを分けたほうが良いでしょうか?

    • ベストアンサー
    • MySQL
  • あるテーブルの項目を持つ別のテーブルの検索

    お世話になります。 マスタのcodeという項目と同じ名前で使用されているテーブルを 検索するにはどのようにしたらいいでしょうか? よろしくお願いします。

  • SQLで他のテーブルの項目を参照する方法

    SQLでは表の中で他の項目を参照することは出来るでしょうか。 具体的にやりたいのは例えば次のようなことです。 得意先リストのデータベースの中に、 (得意先ID,住所,担当者名,TEL,FAX)というフィールドからなる「商品発送先」というテーブルを作ります。 もうひとつ別に、 (得意先ID,住所,担当者名,TEL,FAX)というフィールドを持つ「請求書発送先」というテーブルも作ります。 同じ得意先でも2つの発送先の担当者名だけが違ったり、住所も違ったりする場合があるからです。 しかし大部分の場合は同じなので、そういう場合に両方のテーブルに同じ値を書くとメモリーの無駄ですし、変更があったときに両方を修正しなければなりません。 そこで、例えば「請求書発送先」の"住所"が「商品発送先」の"住所"と同じであれば、その項目には同じ住所を書く替わりに"商品発送先に同じ"とか(あるいはそれを意味するなんらかのコード)を記入しておき、select文などでデータを出力する際に、"商品発送先に同じ"という記述を見つけたら「商品発送先」テーブルの対応する項目の内容を出力する。 というようなことはできないでしょうか。 もちろんデータベースの操作にPHPなどを使ってプログラムを組めばそういうことは簡単に出来ますが、SQLだけでそういうことができる方法があるかどうか知りたいのです。 あるいは、そういうことをしたいのならデータ構造をこういう風に変えた方がいい、というアドバイスでも結構です。 よろしくおねがいします。

    • ベストアンサー
    • MySQL
  • accessのテーブル設計について

    超初心者で、超初歩的な質問になりますので優しく教えてください・・・ accessのテーブル設計について教えてください。 Excelで管理していた社員台帳が退職者含めると500人ほどに増えてきたので、社員の管理ソフトを作るように言われ必死でaccessを勉強し頑張っているところです。 そして、もともとのマスタなどはエクセルから拾っているのですがどうしてもそのまま入れることができないようなものが出てきています。 それが住所歴や昇給歴などのその個人によって複数あったりなかったりするものです。 Excel管理だったので 社員CD  氏名  昇給日   基本給    年齢給 123    A   2018/10/1 350000   50000          2018/4/1  355000    52000 124    B   2018/10/1 360000   65000          2018/4/1  355000    52000 ・ ・ ・ のようにずらーっと並んでいます。 この時、テーブルの設計はどのようにしたらいいでしょうか? 社員CDと氏名のテーブルを作成するのはわかるのですが、昇給額のようなものはどのようにテーブルを作り、どのように他のテーブルとつなげていいのかわかりません・・・ どなたかお力を貸して下さるとうれしいです。  

  • 以下の項目のテーブルを作成したいんですが。

    PHP+MySQLで 普通科A ---------------------- 普通学生番号 名前 住所 電話番号 得意科目1 得意科目2 平均点 進学希望1 進学希望2 普通科B ------------------------ 普通学生番号 名前 住所 電話番号 得意科目1 得意科目2 平均点 就職先1 就職先2 補習科 ---------------------------- 補修学生番号 名前 住所 電話番号 国語点数 数学点数 英語点数 物理点数 というような項目を追加、更新、削除、検索というwebアプリを作成したいんですが、テーブル構成はどのようにするのが一般的なんですか? これは例なのでフィールド数は少ないですが、共通する部分がたくさんある場合、 table_1 普通科ABに共通するフィールド table_2 普通科Aの残り table_3 普通科Bの残り table_4 補習科のフィールド という風に分けたほうがいいんでしょうか? 普通科A、普通科Bの登録フォームから INSERTする時など 「普通学生番号」の管理が大変そうなんですが。 技術が無い場合、普通科A、普通科B、補習科と 3つのテーブルにして全部入れて処理したほうがいいんですかね。

    • ベストアンサー
    • MySQL
  • MySQLのテーブル設計について

    PHPとMySQLを勉強中です。 データベースと連携させた「お気に入りのお店」を登録するような地図サイトを作ろうと思っているのですが、テーブル設計について疑問ですので、よろしければ教えてください。 ちなみにMySQLへ登録する項目は、 id(連番)、日付、ユーザーID、ユーザーパス、お店の名前、お店の住所、電話番号、HPアドレス、お店の写真 などを考えています。 1、効率のいいテーブルの設計とはどのようなものでしょう? 素人考えでは、一括で管理したほうがよさそうだと思うのです。 ですが、他の方のスクリプトをダウンロードして見てみると、ほとんどテーブルが分割されていることが多いです。 どのような意図なのでしょう?? 2、バイナリデータはbase64でテキストにしたほうがいいと本に書いてありましたが、テーブルも別にしたほうがいいのでしょうか? 3、このような内容について、詳しい本などがありましたらぜひ教えてください。負荷分散とかバックアップなどについても勉強しようと思っています。 結局は、どのような使われ方をするかで設計が変わってくるような気がしますが、何分、勉強し始めたばかりでよく分かっていません。。 お手すきのときに教えてください。 よろしくお願いいたします。

    • ベストアンサー
    • MySQL
  • MySQLでのテーブル設計(SET型)の使用有無について

    MySQLのSET関数を使う場合、汎用性はなくなりますが、それ以外の メリット、デメリットが知りたいです。 http://www.itmedia.co.jp/enterprise/0308/24/epn01.html を見たのですが、使用すべきかの判断がつきません(><) 以下のようなシステムを考えています。 ■メールマガジン配信 以下、ユーザーがチェックした材料が含まれる料理が投稿されると 1日1回メール配信されます。 このような場合、テーブルに、SETを持つべきか 項目毎にカラムを持つべきか迷っています。 好きなフルーツ(項目はこちらで指定し5~7種類) ・りんご ・ぶどう ・いちご ・バナナ ・キウイ 好きな食べ物の色(項目はこちらで指定で5色) ・赤 ・黄色 ・緑 ・しろ ・茶色 ■現時点でのテーブル設計 ★ユーザーマスタテーブル PK user_id - その他15ぐらいのカラム ★メール配信テーブル PK user_id - f1 - f2 - f3 - f4 - f5 - c1 - c2 - c3 - c4 - c5 このテーブル設計は正しいでしょうか?

    • ベストアンサー
    • MySQL
  • テーブル設計について

    先日明解なアドバイスを頂いたばかりなのですが、もう一つだけ別件で疑問点が出たので質問致します。 簡素なウェブアプリケーションを作成しようとしています。テーブルの設計をしているところなのですが、どのようなテーブル設計にすればよいのか見当がつかないのでアドバイスを頂きたいです。 仮にスタッフというテーブルがあるとします。今のところスタッフテーブルには名前、性別、生年月日というカラムしかありません。このシステム、「シフトスケジュール」という考え方を盛り込みたいです。例えば、2009年6月1日はAさん、Bさんがスタッフとして勤務し、2日はBさんとCさんが勤務する。。といったようなアルバイトのイメージです。 この場合、「シフト」といった新しいテーブルを作った方がいいような気がするのですが、一体どのようなカラムをどのような型で用意すればいいのかわかりません。どんなシステムにしたいかに依存するとは思いますが、これから作ろうとしているシステムは業務用でなく自己学習用なので最低限必要な簡素なレベルにしたいのです。ざっくりな感じで構わないのでカラム、テーブルのアドバイスを頂けると助かります。ちなみにMySQLを使用する予定です。

  • SQL文について

    下記の3つのテーブルがあります。 ・社員マスタ(TBL_SHAIN) ・得意先マスタ(TBL_TOKUI) ・地域マスタ(TBL_AREA) 各テーブルのフィールドは下記の通りです。 ・社員マスタ(TBL_SHAIN)  ・社員コード(shain_code)  ・社員名(shain_name)  ・役職タイプ(post_type)  ・地域コード(area_code) ・得意先マスタ(TBL_TOKUI)  ・得意先コード(tokui_code)  ・得意先名(tokui_name)  ・地域コード(area_code) ・地域マスタ(TBL_AREA)  ・地域コード(area_code)  ・地域(area_name)  ・分類コード(kind_type) ※社員マスタ(TBL_SHAIN)の地域コード(area_code)は配列型です。 社員マスタの地域コードには下記のような配列データが格納されています。 ・「{E01,E02,S01,T01,C03}」  ※この値は地域マスタ(TBL_AREA)の地域コード(area_code)です。 試しに 下記のSQLで配列データを下記のような形式に変換。  SELECT chr(39) || array_to_string(area_code, ''',''') || chr(39) FROM TBL_SHAIN;   「'E01','E02','S01','T01','C03'」 上記で出力した値('E01','E02','S01','T01','C03')で得意先マスタを検索できるかと思って下記のSQLを実行。 SELECT * FROM TBL_TOKUI WHERE area_code IN (SELECT chr(39) || array_to_string(area_code, ''',''') || chr(39) FROM TBL_SHAIN); 結果は空でした。 やりたい事は社員マスタ(TBL_SHAIN)の地域コード(area_code)と地域マスタ(TBL_AREA)の地域コード(area_code)を結合し、また得意先マスタ(TBL_TOKUI)の地域コード(area_code)と結合しようと考えています。 みなさんにアドバイスいただきたいのは社員マスタと得意先マスタと地域マスタを結合するにはどのようにしたらいいでしょうか。 また社員マスタの地域コードに該当する得意先を参照するにはどうしたらいいでしょうか。 どうか宜しくお願いします。

このQ&Aのポイント
  • スマートフォンが突然Wi-Fiに繋がらなくなってしまった場合、原因としてはルーターの問題が考えられます。既存のWi-Fi環境では問題なく接続できるため、スマホとの相性や設定の問題ではないと考えられます。具体的な対処方法としては、ルーターの電源を一度切って再起動する、ルーターのファームウェアを最新のものにアップデートするなどがあります。
  • また、スマホの再起動やQRlinkからのインストールを試してもWi-Fiネットワークに接続できない場合、ルーターの設定画面にアクセスできない可能性も考えられます。ルーターの設定画面にアクセスするためには、通常はhttp://192.168.2.1/というアドレスにアクセスしますが、サーバーが応答を停止している場合はアクセスできません。この場合、電源の再起動やリセット、サポートセンターへの問い合わせなどが必要です。
  • 初心者でパソコンを持っていない場合、ルーターのトラブルは非常に困難なものとなります。電話でのサポートが繋がらない場合は、メーカーや販売店のサポートセンターに相談することをおすすめします。専門の技術スタッフが対応してくれるため、問題の解決につながる可能性が高くなります。
回答を見る