多言語データベース設計に関する質問をここに投稿しました。
[]多言語データベース設計のベストプラクティスは何ですか?
私はマーティンの提案が好きですが、ビジネスオブジェクトを作成するための最良の方法は何でしょうか?ProductTranslationオブジェクトを含む製品を作成する場合、UIでのバインドと作業は複雑になります。ローカライズされたオブジェクトのみを作成する必要がある場合は、CMS用に別のオブジェクトを作成する必要があります
。ありがとうございます。
1 に答える
2
これはあなたの正確なニーズに依存するため、答えるのは難しいです。私たちが1つの場所に持っているのは、これです(他の質問で説明されているDBモデルに基づいています)。
- ビジネスオブジェクトはデータベースをモデルにしています。つまり、ProductTranslationオブジェクトのコレクションを持つProductクラスがあります。
- Productクラスには、多言語データのプロパティがあります。例:説明
- これらのプロパティのゲッターは、(現在の言語に基づいて)正しい翻訳オブジェクトを検索し、対応する値を返します
非常に単純な例(関連する部分のみを示しています):
class ProductTranslation
{
public string Description;
}
public class Product
{
private List<ProductTranslation> _translations;
private ProductTranslation GetTranslation(string language)
{
// return translation for specified language
// or return translation for default language
}
public string Description
{
get
{
return GetTranslation(GetCurrentLanguage()).Description;
}
}
}
ASP.NETWebアプリケーションにはこのアプローチを選択しました。CurrentLanguageは、ユーザーごとに異なる場合があります(ユーザーは、UIとデータに使用する言語を選択できます)。このアプローチにより、すべてのユーザーのデータをグローバルにキャッシュできます。
ニーズによっては、このアプローチが最適でない場合があります。たとえば、ProductテーブルとProductTranslationテーブルを1つのビジネスオブジェクト(Product)としてモデル化し、特定の言語用にロードする方がよい場合があります(たとえば、データが読み取り専用で、アプリケーション全体にキャッシュする必要がない場合)。
于 2009-05-30T14:32:17.793 に答える