Localização de banco de dados

Eu tenho um número de tabelas de banco de dados que contêmname edescription colunas que precisam ser localizadas. Minha tentativa inicial de projetar um esquema de banco de dados que suportaria isso era algo como:

product
-------
id
name
description


local_product
-------
id
product_id
local_name
local_description
locale_id


locale
------
id
locale

No entanto, esta solução requer um novolocal_ tabela para cada tabela que contenhaname e colunas de descrição que exigemlocalization. Em uma tentativa de evitar essa sobrecarga, eu redesenhei o esquema para que apenaslocalization mesa é necessária

product
-------
id
localization_id


localization    
-------
id    
local_name
local_description
locale_id


locale
------
id
locale

Aqui está um exemplo dos dados que seriam armazenados neste esquema quando há duas tabelas (produto e país) que requerem localização:

país

id,     localization_id
-----------------------
1,      5

produtos

id,     localization_id
-----------------------
1,      2

localização

id,     local_name,   local_description,     locale_id
------------------------------------------------------
2,      apple,        a delicious fruit,     2
2,      pomme,        un fruit délicieux,    3
2,      apfel,        ein köstliches Obst,   4
5,      ireland,      a small country,       2
5,      irlande,      un petite pay,         3

localidade

id,     locale
--------------
2,      en
3,      fr
4,      de

Observe que a chave primária composta dolocalization mesa é(id, locale_id), mas a chave estrangeira noproduct tabela refere-se apenas ao primeiro elemento deste composto PK. Isso parece "uma coisa ruim" do ponto de vista da normalização.

Existe alguma maneira de corrigir esse problema ou, alternativamente, existe um esquema completamente diferente que suporte a localização sem criar uma tabela separada para cada tabela localizável?

Atualizar: Vários entrevistados propuseram uma solução que requer a criação de uma tabela separada para cada tabela localizável. No entanto, isso é precisamente o que estou tentando evitar. O esquema que eu propus acima quase resolve o problema para minha satisfação, mas estou insatisfeito com o fato de que olocalization_id chaves estrangeiras referem-se apenas a parte da chave primária correspondente nolocalization mesa.

Obrigado, don

questionAnswers(4)

yourAnswerToTheQuestion