多语言数据库设计业务类
Posted
技术标签:
【中文标题】多语言数据库设计业务类【英文标题】:business classes for multilanguage database design 【发布时间】:2010-10-30 02:36:14 【问题描述】:我在这里发布了一个关于多语言数据库设计的问题,[]What are best practices for multi-language database design?我喜欢 Martin 的建议,但现在我有一个问题,创建业务对象的最佳方法是什么?如果我将创建包含 ProductTranslation 对象的产品,那么 UI 中的绑定和工作将会很复杂,如果只有本地化的对象,我将不得不为 CMS 创建不同的对象非常感谢!
【问题讨论】:
感谢您的回答!我不敢相信这个问题的关注度如此之低。您能否写下您对该主题的结论(例如,您使用什么方法,利弊等)给 cmets 或作为答案。将不胜感激。 @krocan 我不记得所有的利弊,因为我在 2 年前就需要这个,但我认为 Martin 完全适用于这个问题 【参考方案1】:很难回答,因为这取决于您的确切需求。我们在一个地方拥有的是这个(基于另一个问题中描述的数据库模型):
业务对象是根据数据库建模的,这意味着我们有一个 Product 类,其中包含 ProductTranslation 对象的集合 在 Product 类中,我们具有多语言数据的属性,例如说明 这些属性的getter查找正确的翻译对象(基于当前语言)并返回相应的值一个非常简单的例子(只显示相关部分):
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.NET Web 应用程序选择了这种方法。每个用户的 CurrentLanguage 可能不同(用户可以为 UI 和数据选择他们喜欢的语言)。这种方法允许我们为所有用户全局缓存数据。
根据您的需要,这种方法可能不是最好的。例如。最好将 Product 和 ProductTranslation 表建模为一个业务对象(产品),然后为特定语言加载(例如,如果数据是只读的并且不需要在应用程序范围内缓存它)。
【讨论】:
再次感谢马丁,有用的帖子以上是关于多语言数据库设计业务类的主要内容,如果未能解决你的问题,请参考以下文章