人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

国際化に対応したDB設計で一般的に用いられる方法と、メリット・デメリットを教えて下さい。

@単純にフィールドを増やす:

contents (table)
-id
-comment_jpn
-comment_usa
-comment_fra
-author
..

@テーブル単位で増やす:

contents_jpn (table)
-id
-comment
-author
..

contents_usa (table)
-id
-comment
-author
..

@マスター言語以外をまとめる:

contents (table) : master扱い
-id
-comment
-author
..

contents_i18n (table)
-id
-content_id : fk
-locale : usa,fra..
-comment
..

@全言語を並列に:

contents (table)
-id
-author
..

contents_i18n (table)
-id
-content_id : fk
-locale : jpn,usa,fra..
-comment
..

@1つのテーブルで済むように:

contents (table)
-id
-author
..

resources (table)
-id
-type
-published
..

i18n (table)
-id
-table : contents,resources
-row_id : (content_id),(resource_id)
-field : comment,(resouce)title
-locale : jpn,usa,fra..
-data
..

それぞれ一長一短ありそうですが、
一般に用いられている落としドコロはどの辺でしょうか?
(もしくはもっと高度な手法が・・)



●質問者: dak
●カテゴリ:インターネット ウェブ制作
✍キーワード:dB FIELD FK FRA i18n
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● pahoo
●35ポイント

文字コードが、DB単位/TABLE単位/FIELD単位で設定するかどうか(できるかどうか)で、前提条件が変わってきます。

ちなみに、MySQL 5.0 以降では、DB単位/TABLE単位/FIELD単位のいずれも可能ですが、インストールオプションによってはDB単位でしかできない場合があります。


DB単位でしか設定できない場合は、各言語のテーブルを別DBに持たせるしかありません。

TABLE単位で設定できるなら、あとで別の言語(TABLE)が増える可能性を見越して、「@テーブル単位で増やす」が無難でしょう。

文字コードに依存するデータをbinary形式で格納し、そのFIELDの文字コードを別FIELDに格納する以下のような構造にすれば、「@単純にフィールドを増やす」も可能でしょう。

contents (table)
-id
-comment_jpn
-encode_jpn
-comment_usa
-encode_usa
-comment_fra
-encode_fra
-author

参考サイト

◎質問者からの返答

文字コードという超基本的な話を考えていなかったです(アホ

英語版を作るだけなら平気ですが、fraとかkorとかになってくると・・。

うーむ、やっぱり設計段階から折り込んでおかないとかなりキツそうですね。

質問して良かった。


2 ● chuken_kenkou
●35ポイント

RDBMSは、何を使うのでしょうか?

もし、MySQLなら母体データ件数にもよりますが、百万件を超えるような規模なら、「列を追加する」という方法は、あまり推奨しません。

MySQLでは、「ALTER TABLE」実行時、格納している全件のコピー(再格納)が発生します。PostgreSQLでも、「NOT NULL」指定で列追加すると、全件更新が発生します。

MySQL :: MySQL 5.1 リファレンスマニュアル :: 12.1.2 ALTER TABLE 構文


商用RDBMSの場合は、「ナルが格納されている」と解釈し、ALTER TABLE時の全行更新は行わない仕組みにしている場合が多いので、この辺の懸念はなくなります。

◎質問者からの返答

回答有難うございます。想定しているのはMySQLですが、人力で翻訳してゆくコンテンツなので、百万件を

超えるという事は無いかと思います。全件コピーの何が怖いのかはちょっと分からないのですが、処理的に

重そう&トラブりそうだなーという事は感じました。勉強になります。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ