Хороший дизайн таблицы базы данных для хранения локализованных версий данных [закрыто]

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

Вопрос

Я пытаюсь создать несколько таблиц для хранения некоторых данных, которые позже должны быть преобразованы на другие языки.Кто-нибудь может предоставить некоторые "лучшие практики" или рекомендации для этого?

Спасибо

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

Решение

Допустим, у вас есть таблица продуктов, которая выглядит следующим образом:

Products
----------
id
price

Products_Translations
----------------------
product_id
locale
name
description

Затем вы просто присоединяетесь к product_id = product.id и где locale='en-US'

конечно, это влияет на производительность, поскольку теперь вам нужно объединение, чтобы получить имя и описание, но позже оно допускает любое количество локалей.

Другие советы

Я полагаю, что было бы полезно получить дополнительную информацию о том, что вы делаете.Можете ли вы привести несколько примеров полученных данных?И что вы подразумеваете под динамикой?Что со временем будет вставлено много данных и внесено много изменений в данные или что данные должны быть доступны только в течение небольшого периода времени.

В общем, вам, вероятно, следует рассматривать родительскую таблицу с общими нелокализованными данными и дочернюю таблицу с локализованными данными и языковым ключом.Если под динамикой вы подразумеваете, что она часто меняется, вы можете захотеть взглянуть на использование триггеров и чего-то вроде флага "translationRequired", чтобы отметить вещи, которые нуждаются в переводе после внесения изменений.

Можете ли вы описать природу "динамических данных"?

Одним из способов реализовать это было бы иметь 3 разные таблицы:

  • Языковая таблица
    • В этой таблице будут храниться язык и ключ :
    [1, English], 
    [2, Spanish]
  • Таблица определения данных
    • При первом вводе динамических данных внесите запись в эту таблицу с указанием идентификатора данных:
      [1, 'Data1'], 
      [2, 'Data2']
  • Таблица Data_Language данных
    • Эта таблица свяжет язык, определение данных и перевод
      So: [Data_Language, Data_Definition, Language, Translation]
          [1, 1, 1, 'Red']
          [2, 1, 2, 'Rojo']
          [3, 2, 1, 'Green']
          [4, 2, 2, 'Verde']

          etc ...

Когда динамические данные будут введены, создайте запись по умолчанию на "английском" языке, а затем переведите на досуге.

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