多语言数据库设计业务类

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 表建模为一个业务对象(产品),然后为特定语言加载(例如,如果数据是只读的并且不需要在应用程序范围内缓存它)。

【讨论】:

再次感谢马丁,有用的帖子

以上是关于多语言数据库设计业务类的主要内容,如果未能解决你的问题,请参考以下文章

设计多语言网站数据库的最佳实践

多语言设计数据库。对外键的双重唯一键引用

asp.net MVC 多语言设计

asp.net MVC 多语言设计

asp.net MVC 多语言设计

asp.net MVC 多语言设计