Мы создаем большую базу данных электронной коммерции, которая должна учитывать данные на нескольких языках. Например, таблице продукта потребуется один или несколько переводов для имени, описания, мета-заголовка, мета-ключевых слов, мета-описания и т. Д.
Есть несколько способов сделать это с точки зрения проектирования реляционных баз данных. Но Entity Framework 4 добавляет несколько ограничений, и производительность вызывает большую озабоченность.
Аналогичная проблема, как в Многоязычный дизайн базы данных
Вот пример набора таблиц, который мы рассматриваем:
[Product]
- Id (PK)
- CreateDate
- NamePhraseId (FK)
- DescriptionPhraseId (FK)
- Price
- ...
[Phrase]
- id (PK)
- Invariant
[Translation]
- id (PK)
- PhraseId (FK)
- LanguageCulture (Example: en-US)
- Translation
Мы также можем добавить справочную таблицу LanguageCulture.
Этот метод имеет свои плюсы и минусы, как и другие методы. Нам не нужно создавать дополнительные таблицы для каждого столбца таблицы, для которых может потребоваться перевод (без ProductName, например таблиц ProductDescription), так как это сделает нашу модель данных слишком большой.
В приведенном выше примере название продукта будет содержать ноль или одну фразу с одним или несколькими переводами. Насколько я помню, Entity Framework требует, чтобы отношения 1: 1 имели один и тот же первичный ключ в таблицах, я не знаю, является ли это тем же случаем с отношениями 0 или 1, но это может быть нарушителем для вышеуказанного метода.
Мне было очень трудно найти хорошую информацию о Entity Framework и руководстве по проектированию многоязычной базы данных / модели. Я был бы очень признателен за советы и рекомендации с акцентом на хороший дизайн и наилучшую производительность.
Заранее спасибо!