1

多言語システムを実装しようとしていますが、stackoverflowに関するトピックに出くわしましたが、そのアイデアがわかりませんでした。

完全な質問はここにあります

質問のオプション3、それは以下のような構造を持っています

CREATE TABLE T_PRODUCT (
  NAME_FK        int,
  DESCRIPTION_FK int,
  PRICE          NUMBER(18, 2)
)

CREATE TABLE T_TRANSLATION (
  TRANSLATION_ID
)

CREATE TABLE T_TRANSLATION_ENTRY (
  TRANSLATION_FK,
  LANGUAGE_FK,
  TRANSLATED_TEXT NTEXT
)

CREATE TABLE T_TRANSLATION_LANGUAGE (
  LANGUAGE_ID,
  LANGUAGE_CODE CHAR(2)
)

T_TRANSLATIONしかし、なぜテーブルが必要なのかわかりませんでした。それの仕事は何ですか?この質問にもいくつかのコメントがありましたが、彼らはその質問に対する答えを得ませんでした。

このアプローチで製品を挿入および選択するにはどうすればよいですか?

4

1 に答える 1

4

しかし、T_TRANSLATION テーブルが必要な理由がわかりませんでした。それの仕事は何ですか?

翻訳する必要があるフィールドを識別し、T_TRANSLATION_ENTRY テーブルから FOREIGN KEY の「ターゲット」を提供すると思います。したがって、特定のフィールドの TRANSLATION_ID は 1 である可能性があり、他のフィールド (必ずしも同じテーブルにあるとは限りません) では 2 である可能性があります。このようにして、無制限の数の翻訳をカバーする 3 つのテーブルのみの制限された構造を持つことができます。モデルの残りの部分にある「翻訳可能な」テーブル。

そうは言っても、外部キーを適切に強制せず (DBMS は TRANSLATION_ID の意味を「認識」せず、有効な値のみが含まれていることを保証できない)、パフォーマンスを浪費する可能性があるため、このような構造には反対です。加入。

モデルに多くの新しいテーブルを追加することを意味する場合でも、翻訳可能なテーブルと翻訳の間にまっすぐな 1:N の関係を持つ方が良いと思います (基本的に、翻訳可能なテーブルごとに 1 つの新しい翻訳テーブル)。例えば:

ここに画像の説明を入力

于 2013-03-18T13:37:29.890 に答える