0

私の Web アプリケーションは Grails で実装されています。

私の状況では、より多くの列を持つドメイン クラス (休止状態クラス) があり、そのうちのいくつかは最大 4000 文字の大きな文字列です。

例えば ​​:

String description // max 4000
// column2, column3, etc

ここで、この要素用に多言語データベースを実装する必要があります。私の戦略は、言語ごとに 1 つのフィールドを持つことです。

String description_en_US
String description_de_DE

私の質問は、言語ごとに個別のテーブルを用意した方が効率的か、それとも 1 つの大きなテーブルに保存した方が効率的かということです。質問には 2 つの部分があります。第一に、データをロードするときに大きなメモリを使用する場合、休止状態にとってより効率的であり、第二に、データベースにとってより効率的であるのはどちらですか?

後で 10 以上の言語を持つことになるかもしれません。

4

2 に答える 2

1

以前、いくつかの値を持つ 1 つのテーブルがあり、翻訳された値を複数の言語で保存する必要があるという同様の状況に対処しました。いくつかの議論とブレーンストーミングの後、以下のアプローチに最終決定しました。

Table1: MainTable 

     id, Description, Column1, column2 ......


Tables2: MainTransTable

     id, MainTable_id (FK), Language, description_trans

したがって、これは MainTable エンティティになり、MainTransTable エンティティのコレクション (1 対多の関係) になります。各 MainTransTable は、Language 列に従って、特定の言語の MainTable の翻訳バージョンを表します

Advantages:
- In future if you want to add value for another language, then you just need to add another row in MainTransTable
- Currently you are only translating only one column. So in future if you decide to translate any other columns,  you can use same table structure with new trans column added in trans table
于 2012-10-26T10:16:19.083 に答える
1

質問にはお答えできませんが、言語のフィールドを使用するのではなく、言語とこのテーブルへの参照を含む別のテーブルを使用することを強くお勧めします。これは、別の言語を追加する必要がある場合、既存のテーブルの構造を変更する必要はなく、言語テーブルに別の行を追加するだけで、そのキーを説明テーブルの外部キーとして使用できるためです。長い文字列は問題ではないと思います。説明テーブルにいくつのエントリを維持する予定ですか?

于 2012-10-26T11:24:49.333 に答える