DBに詳しい方に質問します。


複数の言語を使用する方々へ向けてサイトを作るとします。
例えば、英語と日本語を使ったサイトを作るとします。

[user table]
id
name
smoke id



[smoke table]
id
name

をつくり[user table]のsmoke idと[smoke table]のidを連結させました。

この場合、言語が日本語だけですとsmoke tableのnameに「禁煙」「喫煙」と追加すれば良いのですが、
英語やその他の言語も対応する場合どのような構成にするのが良いでしょうか?
japanese name, english name....として行くのが良いのでしょうか?

項目はsmokeだけではありませんし、言語も5言語以上対応するかもしれません。
DBを使用しない方が良ければそのアドバイスもいただければと思います。

またMySQLを使用する場合、text,varchar,charはどのように使い分ければ良いのでしょうか?
このようなデータの場合はこれを使うのが良いと言った感じでアドバイスいただければと思います。
上のような場合はtextよりcharを使うべきでしょうか?

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:2009/12/04 23:38:11
  • 終了:2009/12/05 00:38:02

ベストアンサー

id:JULY No.1

JULY回答回数966ベストアンサー獲得回数2472009/12/05 00:25:30

ポイント60pt

固定のコンテンツで、Web サーバが Apache なら、「コンテントネゴシエーション」でブラウザから送られる対応言語の情報で切り替えられます。

コンテントネゴシエーション - Apache HTTP サーバ

...って、実際に試した事は無いんだけど(^^;、Apache に付いてくる HTML のマニュアルが、

index.html     index.html.en  index.html.fr         index.html.ko.euc-kr
index.html.de  index.html.es  index.html.ja.euc-jp  index.html.pt-br

といった具合に、ファイル名に言語(というか文字コードというか)を識別する名称が付いています。

で、データベース側ですが、例えば、これらの識別名称が入るカラムを追加しておく、というのはどうでしょうか?

  • user table
id* lang* name* smoke_id*
1 ja はてな 1
1 en hatena 1
  • smoke table
id* lang* name*
1 ja 禁煙
1 en No smoking
2 ja 喫煙
2 en Smoking

またMySQLを使用する場合、text,varchar,charはどのように使い分ければ良いのでしょうか?

MySQL :: MySQL 5.1 リファレンスマニュアル :: 10.4 文字列タイプ

上記ページにまとめがありますが、簡単に言うと、

  1. 最初から長さが分かっているような、例えば、商品コードのようなものは char
  2. 長さはまちまちだが、一連の文章ような長さではない、例えば、メールアドレスや URL のような物は varchar
  3. 文章のような長さ、例えば、はてなの質問や回答の文章は text

という使い分けで、検索時のパフォーマンスがこの順序、というのが、ざっくりした違いです。

id:ganessa

おー。なるほど。

とても解りやすかったです。

ありがとうございました。

2009/12/05 00:37:57

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

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

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

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

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