MySQLカラム名は日本語と英数字のどちらが良いか

このQ&Aのポイント
  • MySQLカラム名における日本語と英数字の利点と問題点について考えてみましょう。
  • 日本の企業の傾向やセキュリティ上のリスク、個人的な選択基準についても検討してみました。
  • あなたの開発環境に合わせて最適な選択をするためにも、この要点を押さえておくと良いでしょう。
回答を見る
  • ベストアンサー

MySQLカラム名は日本語と英数字のどちらが良いか

MySQLのカラム名に日本語を使うか、英数字を使うかで迷っています。英数が無難だと思うのですが、日本語の方が簡潔で分かりやすい命名ができるので、もし大した問題が無ければ日本語を使おうと考えています。 そこで3点お伺いしたく存じます。 1. 日本の企業はMySQLのカラム名に日本語を使っているケースが多いのか、それとも英数字のみのケースが多いのか、最近の傾向をご教示頂けますか。統計は無いと思いますので、体感や自社ルールの場合等でも結構です。 2. 日本語を使うことでセキュリティホールができることは考えられますか。例えば、マルチバイト文字はSQLインジェクション対策をすり抜ける・・・等。 3. 自分なら日本語と英数字のどちらを使うか。理由も添えて頂けると幸いです。 当方の開発環境は、PHP(ver. 5.5.9) + MySQL(ver. 5.6.16)です。 お手数おかけしますが、ご教示お願い致します。

  • MySQL
  • 回答数2
  • ありがとう数2

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

  • ベストアンサー
  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.1

(1)日本語を使うケースはほぼ100%ないですね (2)セキュリティはあまり関係ないでしょう カラム名を検索者がダイレクトに指定することはまずありえないので カラム名の日本語でインジェクションが発生する可能性はほぼありません。 逆に万が一もしそういう仕組みを考えているならすぐ見直すべきです。 (3)上で否定しておいてなんですが・・・ 自分でやる環境はほぼ日本語カラム名をつかっています。 他人を気遣う必要がなく迷惑をかけないなら日本語で十分です。 余談 日本語ではまるケースはいろいろ想定されます。 とくにMySQLのバージョンアップ、枯れたシステムの3.23系から5.0以上に 環境をシフトする際にかなりトラブリました。 システム周りの環境はは数年単位でかわっていくものです。 別環境に移行する準備を当初から想定しておかないと、かなり痛い目を見ます。 また、メンテナンスする際も、かならずしも日本語入力できる環境とは 限らないことから、日本語を利用することによるリスクは高めに想定しておく 必要があります。なんらかの日本語が入力できない状況で、データベースから エクスポートをしようとしてはまるとか、ないことはないと思います。 バグやエラーなど一般的なトラブルの際にも、日本語に起因する問題なのか そうでないのか、無駄にチェックが増えるので、デバグも不利になります。 全部ひっくるめて、自分でなんとかする覚悟と技量があるなら、日本語カラム名で やるメリットはあるので、トライする価値はあるでしょう

coba--coba
質問者

お礼

お話を伺う限りでは、日本語の使用はメンテナンスが一番の問題のようですね。 デバグの手間を考えると、やはり日本語は面倒です。 ですので、今回は英数字にします。 大変参考になりました。 ご回答頂き、ありがとうございました。

その他の回答 (1)

  • t_ohta
  • ベストアンサー率38% (5085/13292)
回答No.2

1.ほとんど英数字です。説明を付けたい場合はcommentで各カラムに説明を日本語で書きます。 長くSEをやっていますが、日本語のカラム名は過去に一度見ただけですね。 2.全く関係ありません。 適切にプログラムを書いていればセキュリティー上の問題は発生しません。 逆に英数字だけであってもプログラムに問題があればセキュリティー上の問題が発生します。 3.英数字を使ってます。 そもそもプログラムを書いているときは、基本的に全て半角文字で入力しますから一々日本語変換をするのは効率が悪すぎます。

coba--coba
質問者

お礼

回答を拝見して、日本語のメリットはあまり無い気がしてきました。 確かにcommentで十分ですね。 今回はDBのカラムには英数字で、設計で用意する表に日本語と英数字で書いておくことにします。 大変参考になりました。 ご回答頂きありがとうございました。

関連するQ&A

  • MySQLで日本語カラム名を使いたいのですが

    当方の質問に興味をもっていただいてありがとうございますm(__)m 当方未熟ながらJAVAプログラマーを職業にさせていただいておりまが、この度MySQLを使用した日記WEBサイトを構築することになりました。しかし、日本語カラム名を使用したく困っております。 環境はTomcat5.5、MySQL5.1(ベータ)、JDBCは5.1、Eclipseは3.2です。 カラム名を英数字にすれば至らぬ私の技量でも問題ない案件なのですが、オラクルしか使用したことのない私には未知の領域です。 日本MySQL協会の「徹底入門」、DBの「現場で使えるMySQL]等の書籍は網羅したつもりですが、どうにも問題解決策を見つけることができませんでした。 もし解決策をご存知の方がいらっしゃりましたらば、お手数ではありますがその方法を教えていただけないでしょうか? 私が悩んでいるのは「WEBアプリからDBにSQLを投げた際、SELECT 日本語 From テーブル とし、JAVA側で「getString(”日本語”)」が使えないことです。 JDBCそのものの問題なのでしょうか?? よろしくお願いいたします。

  • MySQL 予約語名で、カラム作成できるでしょうか

    ■質問 ・MySQL予約語名でもカラムを作成できるのでしょうか? ■背景 ・文法エラーSQL文の原因を調べると、どうやら予約語を利用したためだと分かりました ・予約語と知っていたら初めから利用しなかったのですが、その名前で普通にカラムを作成できたので、てっきり使えるものだと思い込んでしまいました ■知りたいこと ・予約語を回避するには、ここをチェックするしかないのでしょうか? ▽MySQL 5.1 リファレンスマニュアル :: 8.3 MySQLでの予約語の扱い   http://dev.mysql.com/doc/refman/5.1/ja/reserved-words.html ・予約語による影響を受けるのはどんな時?(CREATEは関係ない?) 予約語によって異なる?

    • ベストアンサー
    • MySQL
  • Oracle10g リリース2でカラム名

    Oracle10g リリース2で テーブルのカラム名には日本語を使えるのでしょうか? 半角英数のみですか?

  • カラム名について。

    忙しいところ申し訳ありません。 ● 使ってるソフト ORACLE SQLplus <状態> データベースについての質問なんですが、 1.カラム名を日本語してあります。 2.select文コマンドで入力したとき、ORACLE SQLplus でカラム名が表示されません。 データは取れているのですが、日本語にしているとカラム名が表示されないということが、あるのでしょうか?

  • oracle日本語カラム名

    ただ今お客様の要望でカラム名、及びテーブル名を日本語で作成しております。accessで情報を見れるよう考えています。 oracle10gで作成したところカラム名、及びテーブル名を英語で作成したときより検索に大幅に時間がかかるようになりました。どなたか原因を知っている方は教えていただきたです。 ちなみにデータ容量は約100万件1.5G程度です。

  • MYSQLの日本語テーブルはまずい?

    こんにちは。Accessをいままで利用していましたが、ファイルサイズが重くなってきたために、MYSQLを勉強しようと思っています。 Accessの時はテーブル名やフィールド名に普通に日本語を使っていました。MYSQLなどでも日本語のテーブル名やフィールド名を作ることができました。しかし、日本語でAccess感覚でつけるのはまずいのかな?と思いだしましたが(なんとなく)、日本語で続けると将来的にまずいことなどはおこらないでしょうか? MYSQLはWin XP SP3にインストールしています。レベルとしてはVBAを少しかけるくらいで本格的なDBMSは使ったことがありません。 以上、よろしくお願いします。

    • ベストアンサー
    • MySQL
  • カラム名でseqとidではどちらがふさわしいのでしょうか?

    mysql5.1.33を使用しています。 例えば、ユーザ情報を格納するuserテーブルがあって ユーザが決める半角英数字からなるIDを格納するuser_idカラムがあるとします。 そしてAuto Incrementなカラムも付け足すと、 [user] seq INT(11) NOT NULL AUTO_INCREMENT, user_id varchar(16) PRIMARY KEY (seq) UNIQUE KEY user_id (user_id) この場合はseqカラムが主キーになるわけですが、 一般的にはカラム名はseqではなくてidですよね? なんで自分はseqにしたかというと、 user_idカラムのidには文字(半角英字)のIDを、 seqは連番を意味づけさせたいと思いました。 つまり seqがつくカラム名は連番で idがつくカラム名は文字列 と直感的に分かりやすくなるだろうと思ったからなのですが、 みなさんはこのケース(そもそもこのカラム構成が正しいかは分かりませんが・・)の場合は、 どのようなカラム名を付けますか?

  • MySQLの日本語入力について

    現在、MySQLをローカルではVer5.7.17、AWSのRDS内のMySQLはVer5.6.27を それぞれ使っています。 ローカルのほうでは、すんなり日本語(全角文字、半角カタカナ)が入るのですが、 RDSのほうではなぜか、全角文字、半角カタカナを入力しようとすると、 から文字になってしまい、何も入ってないし、NULLでもない状態になります。 ちなみに文字コードはどちらとも、UTF-8です。 よろしくお願いします。

  • MySQLで日本語検索

    MySQL初心者のものです。 今PHPとMySQLを利用して検索システムを作っています。 しかし日本語検索がどうしてもうまくいきません。 一応「教えてgoo」でも探してみたのですが、解決しませんでした。 MySQLで、 テーブル名 table フィールド名 field とすると、 select * from table where field like '%キーワード%'; のように検索してみたのですが、思うような結果が返ってきません。 ネットで検索すると「senna」をインストールと書かれていましたが、 そういったものをインストールしなければMySQLで日本語検索は出来ないものなのでしょうか? ちなみに MySQL5.0 PHP5.2.1 を利用しています。

  • 日本語のテーブル名、カラム名の定義について

    以前、IBMのオフコンでシステム開発を行っていた時期があります。 転職して今はネットワークエンジニアとしての仕事に就いておりますが、必要に迫られて、社内の部門システムの開発を始めようと考えております。 そこで、社内の販売管理の SQL Server のテーブル名、カラム名を確認してみると全て日本語で定義されております。 確固たる根拠はないのですが、どうしても違和感を覚えてしまいます。 今回の開発目的は、部門内のこまごました業務のシステム化で、顧客管理、グループ間の作業依頼や履歴管理等で、Visual Studio .NET 2003 + SQL Server 2000 を使って私一人で開発を行う予定です。 Windows フォーム、Web フォーム(ASP.NET)も利用予定です。 さて、前置きが長くなってしまいましたが、以前は、外資系の会社にいて日本語利用不可のシステム(データベース)でしたので、何も考える必要がなかったのですが、今回の開発を始めるに当たって SQL Server のテーブル名、カラム名の定義を日本語を行った場合の利点、欠点、考慮点等があれば教えて頂きたくて質問しました。 販売されている業務アプリやグループウェアの SQL Server のテーブルやカラム定義を見ても日本語は今まで見かけたことがないのですが、プロの開発者としてのご意見が伺えれば幸いです。