1

여기 다국어 데이터베이스 디자인에 대한 질문을 게시했습니다.
[] What are best practices for multi-language database design?
저는 마틴의 제안을 좋아하지만, 이제 비즈니스 객체를 만드는 가장 좋은 방법은 무엇이 있을까요? ProductTranslation 객체를 포함하는 제품을 만들면 UI의 바인딩 및 작업이 복잡해질 것입니다. 현지화 된 객체 만 CMS에 대해 다른 객체를 만들어야하는 경우
감사합니다.다국어 데이터베이스 디자인을위한 비즈니스 클래스

+0

답장을 보내 주셔서 감사합니다. 나는이 질문에별로 관심이 없다고 믿을 수 없다. 이 주제에 대한 결론 (예 : 사용법, 장단점 등)을 의견이나 답변으로 작성해주십시오. 감사하겠습니다. –

+0

@krocan 나는 2 년 전에 이것을 필요로하기 때문에 모든 장단점을 정확히 기억하지 못한다. 그러나 마틴은이 질문에 완전히 적용될 수 있다고 생각한다. –

답변

2

정확한 대답이 필요하기 때문에 대답하기가 어렵습니다. 우리가 한 장소에있는 것은이 (다른 질문에 설명 된 DB 모델을 기반으로) :

  • 비즈니스 오브젝트가 우리가 ProductTranslation의 모음
  • 객체가 클래스 제품을 의미하는 데이터베이스를 모델로하고 있습니다 제품 클래스의
  • 우리는 다국어 데이터에 대한 속성을 가지고 있습니다. 설명
  • 이러한 속성의 게터는 (현재 언어를 기반으로) 올바른 번역 객체를 검색하고 해당 값을 (단지 관련 부분 표시)

아주 간단한 예를 반환 :

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 웹 응용 프로그램에 대해이 방법을 선택했습니다. CurrentLanguage는 각 사용자마다 다를 수 있습니다 (사용자는 UI 및 데이터에 대해 선호하는 언어를 선택할 수 있음). 이러한 접근 방식을 통해 모든 사용자에 대해 데이터를 전체적으로 캐시 할 수 있습니다.

필요에 따라이 방법이 적합하지 않을 수 있습니다. 예 : Product 및 ProductTranslation 테이블을 하나의 비즈니스 객체 (Product)로 모델링 한 다음 특정 언어 (예 : 데이터가 읽기 전용이고이를 응용 프로그램 전체에 캐시 할 필요가없는 경우)로로드하는 것이 더 좋습니다.

+0

Martin, 유용한 게시물 –

관련 문제