フィールド名は日本語にするか、英語にするか
プログラミング的には、変数名と同じ感覚で英語なのかもしれないが、 英語にすると、日本語との変換データが必要になる。 ユーザーの感覚では日本語が当然わかりやすい。 特にユーザーがなんらかのUIを経て、テーブルやフィールドを 自由に作成する場合は日本語が良い? >1 >ユーザーの感覚では日本語が当然わかりやすい。 1部署のちっこいやつだと↑これが当てはまると思うが複数部署とか 複数業務にまたがると日本語名称だと部署毎の認識が違うとかでかえって わかりにくくなると思われます。 >特にユーザーがなんらかのUIを経て、テーブルやフィールドを >自由に作成する場合は日本語が良い? ユーザさんは日本語名称で提示してくるそれをDB項目一覧とかから ユニークに割り当てして承認もらって・・・ だけどそれが日本語だと大混乱になると思う。 販売管理事業部_商品管理_商品種別コード Char(10) ↑こんな項目名使いたいか? >>1 >販売管理事業部_商品管理_商品種別コード 「Accessで課長が作ったんですけど」って見せられたやつはそんな感じだた >>9 > ユーザさんは日本語名称で提示してくるそれをDB項目一覧とかから > ユニークに割り当てして承認もらって・・・ > だけどそれが日本語だと大混乱になると思う。 > > 販売管理事業部_商品管理_商品種別コード Char(10) > ↑こんな項目名使いたいか? >>1 それが英語だとどうなるの? >>9 種別 だけでいいんじゃない。 General Database を指向するとそうなるのかな? フィールド名に日本語使おうなどと考える奴は なんでもかんでも自分のお脳味噌で管理しようとして お脳味噌で管理できなくなると面倒くさくなって投げ出すタイプ。 フィールド名は”うろ覚え”で扱うようなものではなく 常に全てを覚えておけるものでもないのだから 日本語だろうが英語だろうが関係ない。 PG開発言語やDB定義名にいちいち日本語使いたがる奴は 効率化の着眼点が主観的過ぎてウンコ。 本当に、 > 日本語だろうが英語だろうが関係ない。 のなら、普通に使って問題ないはずだが? 日本語だろうが英語だろうが情報を区別する為の言語を変えたところで たいした効率化にはつながらない。むしろ日本語による識別の場合 標準的な手法と異なることによるデメリットの方が大きい。 コンピュータにおいてマルチバイト文字の使用は 常に特別な問題を持っておりDBのフィールド名に日本語などを 使用すれば互換性や汎用性が著しく低下する恐れがある。 PG開発言語やDB定義名に日本語を使って喜ぶのは 物事を表面的・感覚的にしか理解できないゲーム脳のウンコ野郎だけ。 データがマルチバイトを使用しているからなぁ。説得力ないね。 システム構築時に決定され、文字列長などが 関数演算の対象にならない定義名は何の問題もないはず。 識別子とデータそのもののマルチバイト文字の使用では問題の範囲が全然違ってくるよ。 市販ツールとの相性なんかで大きな違いが出てくる。 フィールド名に日本語を使うということはSQL文に日本語を使うということで クエリーツールなどとの相性を考えると余計な問題が増える可能性は高い。 フィールド名に日本語なんて使わないほうがいい。 >>18 で、ツールやクライアントの相性問題をクリアできれば使っていいって思いますか? 俺はそういう立場を取るんだけど。もちろんツールのバージョンによって変わるような あいまいな条件じゃなく、定義名の文字コードをちゃんと指定できる、というのが前提。 当たり前だけど、将来的に全然違うツールやクライアントを使う可能性が高ければ、 日本語は使わない。 互換性の問題を一切考えなくていいという仮定なら日本語を使うと思うが 現実的には心配が多々あるので無難に英数字を使う。 データベース、フィールド名がUnicodeに対応していれば 使って問題ないんじゃね? >>21 Unicodeもコード体系は1つじゃないんだよ。 ttp://e-words.jp/w/Unicode.html >現実的には心配が多々あるので無難に英数字を使う。 項目名称の不具合で悩みたくないし 結局、これなんだよね。 >>22 > Unicodeもコード体系は1つじゃないんだよ。 で? どのコード体系だろうが、サポートされているUnicodeを使えば問題ないだろ。 >>23 >> データベース、フィールド名がUnicodeに対応していれば >どのコード体系だろうが、サポートされているUnicodeを使えば問題ないだろ。 SJIS・EUCでも何でも良いって事になるんじゃないの? 「どうしても日本語にしろ!」という要望がきたらどうする? シチュエーション的に避けられなかったので(アフォヴォケ営業とかいたので、どうしてもダメだった) 自分の場合は突っぱねて、「テーブルは触るな。触るとシステムが死ぬ」と言ってビュー(の項目名)を日本語にした。 >>23 > SJIS・EUCでも何でも良いって事になるんじゃないの? はぁ? とりあえず、データベースなどにバグがないのなら、 フィールド名は日本語のほうが楽に作れるよな。 バグがあるのがそもそも問題なことを理解しよう。 英語ローマ字の混在型。 ストアドを書く時、列が漢字だと、非常にコーディングしにくい。 これって、漢字ひらがな入れちゃうか半角英数だけにするか みたいな話なのか KOKYAKUBANGOU にするか CUSTOMERCODE にするか みたいな話とは違うのか >>29 それも含めていいような気もするけど、今のところマルチバイト文字による定義名の是非が話題だね。 フィールド名にマルチバイト文字が使えないDBMSなら、 しかたないんで英語か独逸語にする。 日本語のローマ字表記は読みづらいので個人的にキライ。 コンピューターは欧米人の発明品で業界を牽引してるのも欧米人が中心。 マルチバイト文字の対応は遅れを取ることも多いから 日本語文字等の使用は特定の対人表示向けと割り切るべき。 定義情報の識別子に日本語など使うとろくなことはない。 javaなど識別子と関係無いところでも日本語問題があって 結局つきつめていくとエンコードに関わるメソッドで 文字セット指定できないと改善できないことがわかった。 後バージョンでのJVMで改善されてるのは承知していたが その時システムで使用していたバージョンでは問題が解決できず 結局自分で代わりになるクラスを実装して日本語問題を片付けた。 ネットワークストリームに含まれる日本語ですら そんな問題が出てしまうのに定義情報の識別子に 日本語使うなんて信じられない。 JVMのマルチバイト対応にバグがあったという話なら、 それを確認せず採用する方に問題があるのではないか。 UTF8使えばエンコード問題なんて全部解決じゃん。 いまどき、UTF8以外のエンコードで使うやつっているの? >>34 ぱっと思いつくのは、 @携帯 A古ーいシステムに引き渡すためにCSVを吐くという腐った案件 これらはデータ内容の問題だけど、 BWin98から古ーいツールを使ってアクセスしたいとユーザがわがままを言う ま、@はともかく後のはどーでもいい話だと思ってるけどね。 ちなみに俺は>>19 です。 AccessからSQLServerに変えたときに「ー」を使ってたフィールドがらみのSQL文がみんな エラーになってびっくらこいた。 >>23 うん ただ、それだとシステムの追加や入れ替えのとき そのまま動かすには新しいシステムもそれに縛られちゃうから システム構成を決められる権限も持ってないと 全部改修させられるリスクがあるよ 遅レス・・ 基本は英語にすべきじゃないかな? まぁ、どこで製造するかにも寄るけど・・。 最近は、日本で設計したものを中国に投げるケースが多い・・。 中国人は、コメント等を日本語で書いてくれるが意味が不明なものも 多々ある・・。 英語で統一し、理解しやすいものに・・。 そもそも、PCは日本語より英語を使ってソフトを作ったほうが 処理も早いし・・。 とりあえず、外部ツールなどもすべて日本語に対応してるのなら、 一度は日本語フィールド名使ってみたいかな。 判断はそれからだ PostgreSQLとSQLiteで日本語フィールド名を使ってる。複雑なクエリを後から見直す時でも わかりやすくてとっても快適。 本当は英語でフィールド名考えるのがめんどうなだけなんだけどw UTF-8は情報量が1.5倍になる欠点がある。 ナローな回線だと致命的。 > UTF-8は情報量が1.5倍になる欠点がある。 どうせ勘違いしているんだろうなw 今まで見たフィールド名が日本語で構築されたDBにまともなものはなかったなあ。 プログラマー的には日本語にすべきでないと思う人が多いだろうが その場の環境と客の要求に合わせて日本語にする事もある。 まともなDBなんて必要なくただ分かりやすければいいという場合もある。 某大手の会計システムERPの内容を見るとオブジェクト名も項目名も全部英語だったが、 cT01みたいな暗号っぽいのばかりだったので、仕様書が不可欠だった(契約すればDB仕様書を入手できた)。 TAXPercentみたいな具体名に近い項目名がほしかったのだが・・・。 日本語は曖昧なところが多いからなぁ 複数の人が編集する時、似たような名前で別のフィールドを作るなんてことも十分考えられる DBの構築・管理を一人若しくは十分に意思疎通が出来るグループなら日本語でもなんでもいいんじゃない? 逆に別の階の部署の人間が弄ったりするような場合だと、英語の方がいい場合が多いと思う ストアドで日本語のフィールド名がずらずら書いてあるのを見て気づいた。 「記号みたいな英語名になってたときと変わらねー!」 メンテナンス性という観点では仕様書がきちんとしてれば、どっちでもありじゃないかな。 でも、解析やデバッグなんかで、SQL打つときになるべく日本語入力切替とかしたくないから やっぱり英語表記かな・・・個人的には。ということで 英語表記>>>日本語表記>ローマ字>>>>>>>>>>英語+ローマ字 oracleだとテーブル名、フィールド名は30byteまでですよね。 私の携わってるシステムでは、フィールド名に全角文字を使っているので、 全角15文字以下にしないといけない。項目名を日本語にすると、 意外と名称が長くなりがちです。 そうすると、無理やり名称を短縮して定義することになる。 結果分かりづらくなる事が多い。本末転倒です。 あまり勧められませんよ。 フィールド名が日本語で15文字超えるのは、ネーミングに問題があるような気がするけど 一般的に、日本語を英語やローマ字にしたらバイト数は増えるので 30バイトに無理やり名称を短縮したら、結果分かりづらくなる事が多くね?w ところで英語派の人たちに聞きたいんだけど、一般的にありがちなフィールド名、 まあなんでもいいけど例えば数量とか単価とか金額とか、 注文日とか納品日とか納品予定日とか請求日とか請求締日とか 半角アルファベットではみんなどんな命名してるの? 外資系のシステム組んだことないの?英語の仕様書くらい読めないと マイナーな業務の名前を辞書引いて英語にしてたら、後で見てなんのフィールドかわからんかったよw >>51 Oracle ならそもそも、日本語のオブジェクト名が使えるなんて保証してない。 つーか、日本語のオブジェクト名が使えるなんて保障してるDBってあんの? こんなのしか見つからなかったが ttp://www.oracle.co.jp/education/ou_enews_letter/try_om/vol25_fellow_a.html 「日本語のオブジェクト名が使えますよ」とも 「日本語のオブジェクト名は使えませんよ」とも Oracleは明言してないような・・・ ・A-Z、a-z、0-9、_、$、#以外は使用できません。 ・A-Z、a-z、0-9、_、$、#以外を使用した場合は動作保障対象外です。 ↑こういう書き方をしていない以上、マルチバイト文字だって文字なんだから 動作保障「している」と解釈されてもOracleは反論できないんじゃないの? >>59 ちゃんとマニュアル嫁。 >非引用識別子にはデータベースキャラクタセットの英数字、 >アンダースコア(_)ドル記号($)およびシャープ記号(#)のみ >含めることができます。 という事で、引用識別子としてなら日本語が使える。 …使えるんだが、テーブル名・カラム名のすべてをダブルクォーテーションで 括る必要があるわけで、これがまた見辛い事この上ない。オススメしない。 しかもデータベース文字セットがUTF-8だったりすると漢字1文字で3バイト。 その他(Oracleの問題じゃないが)、ミドルウェアやツールの問題で 文字化けしないとも限らないし。 Oracle8.1.7〜10gR2だと全角文字の組み合わせでselectできないフィールドとかつくれちゃう不具合ありますよ そのためにフィールド名を別の名前にした。"とかで囲ってもそんなフィールドないっていわれます。 >>61 ""で括っても駄目ってのは強烈だな。 上司や顧客への説得材料にしたいんで、よければ再現性のある具体例を教えて フィールド名を英単語で付けようと思ってるんだが 通常フィールド名で使うような単語を列記したようなサイト無いかな? 日本語だと単語一つですむものを 英語にすると、熟語や文章になってしまう。 どうしたもんか。 元々英語派だったが、今は半角ローマ字派。 英語にすると、フィールド名にFromとかCurrencyとかが 避けられなくて、代わりの名前も浮かばないことがある。 勤務先では日本語できない外人でもKara、Tsukaを 使ってたりする。 >>66 それなんだよね。 日本語は単語が多い。 しかも合成語も簡単に作れる。 英語だとそうはいかない。 文章になってしまう。 >53 >54 >66 >67 このへん重要な気が… 代表的なDBMSで日本語フィールド名を使うとどんなケースで 具合が悪いのか知りたくて覗いてるのだけれども、 全く具体例の出てこないね。このスレは。 せめて、ネットがらみだとドウだ、くらいの話題に展開しても いいはずだが。 Oralce/SQLServer + Delphi使いなのだが、フィールド名に英語が使われていると、たとえば 「MakerName」をQueryオブジェクトに取り込むとき、項目のオブジェクト名がQuery1MakerNameになって 直感的にコーディングがしやすくなるが、 「製造業者名」にしてしまうと、取り込まれたオブジェクト名がQuery1StringField1のようにIDEによって 適当につけられたNameになってしまい、コーディングのときDBの項目名とコードのオブジェクト名がまったく一致しない。 あとで直したり、あらたに対応表を作るのも大変。結局英語フィールドの方がストレスがたまらない。 .NETやJavaでDBアプリ組んだことがないからわからないけど、上手くやっているのかな? エンドユーザーが「日本語くれ」と言ってきたら、別名でビューを切って対応している。 見出しを付けるなら「IDEの思わぬ陥穽」となるね。 >>72 少なくともOracle9iではマテリアライズド・ビューが作れないことがある・・・orz ストアドやトリガー名も日本語でやってますが 何か問題でもあんの? VB と SQL Server で日本語使ってたけど問題なかった。 他の言語や DB だと色々大変なんだね。 日本語だと特別に考えなくても皆の認識が一致するから楽。 もちろん読んで(見て)分かり易い。 英文字だと変な英語だったりローマ字だったりでイライラする。 CREATE TABLE `meibo` ( `id` integer, `yuuzanamae` varchar(16) NOT NULL, `pasuwardo` varchar(32) NOT NULL, `nickname` varchar(32) NOT NULL, `email` varchar(40) NOT NULL, `namae` varchar(32) default NULL, `seibetu` char(1) default NULL, `tanjyobi` date default NULL, `yuubin` varchar(8) default NULL, `adoresu1` varchar(9) default NULL, `adoresu2` varchar(255) default NULL, `adoresu3` varchar(255) default NULL, `tel1` varchar(13) default NULL, `tel2` varchar(13) default NULL, KEY `id` (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=sjis COMMENT='名簿'; CREATE TABLE `meibo` ( `id` integer, `account` varchar(16) NOT NULL, `password` varchar(32) NOT NULL, `ニックネーム` varchar(32) NOT NULL, `email` varchar(40) NOT NULL, `名前` varchar(32) default NULL, `性別` char(1) default NULL, `生年月日` date default NULL, `郵便番号` varchar(8) default NULL, `住所1` varchar(9) default NULL, `住所2` varchar(255) default NULL, `住所3` varchar(255) default NULL, `電話番号` varchar(13) default NULL, `携帯番号` varchar(13) default NULL, KEY `id` (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=sjis COMMENT='名簿'; マトモに日本語が扱える言語 マトモに日本語が扱えるデータベースエンジン これさえ揃っていれば、フィールド名が日本語でも全然支障ないね。 UNIX系OSから派生した、改行文字を”¥n”って書くタイプの言語は マトモに日本語が扱えないダメダメ言語が多いから、こんな無意味なスレが立つんだよね。 性別にsexは照れちゃう・・・。 チームにおなごがいるのでなおさら。 >>80 みたいな間抜けがいるから、こういうスレが勃つんじゃね? >>81 「gender」でどうよ? ちなみにウチのシステムの性別コードは 1.男 2.女 9.その他 って定義になってる。 性別コードはISO 5218で決められているらしい。 0 = not known 1 = male 2 = female 9 = not specified 国内標準としてJIS X 0303でも決められてるけど、 0と9はないそうな。 参照。 tp://d.hatena.ne.jp/takahashim/20061223#p3 国際化(i18n)にいつでも対応できるよう、極力英語に統一するようにしてるけど、 いかんせん新幹線、その英単語に自信が無くて、人様に見せるのが恥ずかしい。 うーん、欧米との連携とかあるので英語。 結局、日本語は欧米の端末じゃそのままだと文字化けするからな。 いろいろな連携とか考えて、8文字に収まるように工夫している。 フィールド名の制限に引っかかるトラブルは 解析で出てくると面倒なので、触らないようにしている。 あんまりフリーにしていると、「○○日」なんてフィールド名が氾濫するし、 そのうち「○○日1」とかになってくるような気がして、 結局今英語で問題なことも日本語で同じように起きる気がするな。 >○○日1 分析段階から間違ってる気がするなw てかアトリビュート一覧管理しないのか? フィールド名を英語にしたいんだけど、 英語名が思いつかないよ。 みんなどうやって考えてるの? 申請書つくるにすら頭を抱える始末だよ。 CREATE TABLE MEIBO ( INT ID, VARCHAR NAMAE, VARCHAR TEL, VARCHAR ZIP, VARCHAR ADORESU ・・・ データの追加・更新・論理削除した日時を入れるカラム名は、みなさんどんな名前にしていますか? insert_datetime update_datetime delete_datetime ↑こういう感じでしょうか? 何か長ったらしいような気がしてます>< CRUDから頭文字を取って c_dt u_dt d_dt なんてものいいかな?と思いましたが、仕様書がないとすぐに連想できないですね>< 設計はともかく俺はdatetimeをdtmにするかどうかぐらいだな >>102 修正します。 挿入日時 更新日時 論理削除日時 さらに修正。 追加日時 更新日時 論理削除日時 つまり、>>99 の「仕様」に近いものほどよい。 ヘボン式にしろよ なんだよ syu とか jyu とか ヘボン式は例外ルール有りすぎ あとjyuって訓令じゃねえし、お前が無知なだけ read.cgi ver 07.5.4 2024/05/19 Walang Kapalit ★ | Donguri System Team 5ちゃんねる