бизнес-классы по проектированию многоязычных баз данных

StackOverflow https://stackoverflow.com/questions/929758

Вопрос

Я разместил здесь вопрос о дизайне многоязычной базы данных,
[]Каковы наилучшие практики проектирования многоязычных баз данных?
Мне нравится предложение Мартина, но теперь у меня возник вопрос, каков будет наилучший способ создания бизнес-объектов?Если я создам продукт, который будет содержать объект ProductTranslation, привязка и работа в пользовательском интерфейсе будут сложными, если только локализованный объект, мне придется создавать другие объекты для CMS
Большое спасибо!

Это было полезно?

Решение

Трудно ответить, так как это зависит от ваших конкретных потребностей.То, что мы имеем в одном месте, это (на основе модели БД, описанной в другом вопросе):

  • бизнес-объекты смоделированы по образцу базы данных, что означает, что у нас есть класс Product, который имеет коллекцию объектов ProductTranslation
  • в классе 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.NET.Текущий язык может отличаться для каждого пользователя (пользователи могут выбрать предпочитаемый ими язык для пользовательского интерфейса и данных).Такой подход позволяет нам кэшировать данные глобально для всех пользователей.

В зависимости от ваших потребностей, такой подход может оказаться не самым лучшим.Например.возможно, было бы лучше смоделировать таблицы Product и ProductTranslation как один бизнес-объект (Product), который затем загружается для определенного языка (напримересли данные доступны только для чтения и не требуется кэшировать их в масштабах всего приложения).

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top