que tienen una serie de tablas de bases que contienen name
y description
columnas que necesitan ser localizado. Mi primer intento de diseñar un esquema de base de datos que apoyaría esto era algo así como:base de datos de localización
product
-------
id
name
description
local_product
-------
id
product_id
local_name
local_description
locale_id
locale
------
id
locale
Sin embargo, esta solución requiere una nueva tabla local_
para cada tabla que contiene name
y columnas de descripción que requieren localization
. En un intento de evitar esta sobrecarga Rediseñé el esquema de modo que sólo se necesita una única localization
mesa
product
-------
id
localization_id
localization
-------
id
local_name
local_description
locale_id
locale
------
id
locale
He aquí un ejemplo de los datos que se almacenan en este esquema cuando hay 2 tablas (producto y país) localización requiere:
país
id, localization_id
-----------------------
1, 5
producto
id, localization_id
-----------------------
1, 2
localización
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
locale
id, locale
--------------
2, en
3, fr
4, de
en cuenta que la clave principal compuesto de la tabla localization
es (id, locale_id)
, pero la clave externa en la tabla product
sólo se refiere a el primer elemento de este compuesto PK. Esto parece 'algo malo' desde el punto de vista de la normalización.
¿Hay alguna manera de solucionar este problema, o alternativamente, ¿existe un esquema completamente diferente que admite la localización sin necesidad de crear una tabla separada para cada tabla localizable?
Actualización: Un número de los encuestados han propuesto una solución que requiere la creación de una tabla separada para cada tabla localizable. Sin embargo, esto es precisamente lo que intento evitar. El esquema que he propuesto anteriormente casi resuelve el problema a mi satisfacción, pero estoy contento con el hecho de que los localization_id
claves externas se refieren sólo a una parte de la clave primaria correspondiente en la tabla localization
.
Gracias, Don
"pero no estoy contento con el hecho de que las claves externas localization_id solo se refieren a parte de la clave principal correspondiente en la tabla de localización". No veo el problema, hay una relación de uno a muchos desde el producto hasta la localización, la estructura de la base de datos sigue los requisitos, ha encontrado una buena solución. –
Esto debe publicarse en http://dba.stackexchange.com/ –