Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

Base de datos para varios idiomas

Estas en el tema de Base de datos para varios idiomas en el foro de Mysql en Foros del Web. Necesito opiniones... Estoy haciendo una web en dos idiomas con idea de que en un futuro se puedan añadir otros. De momento he organizado el ...
  #1 (permalink)  
Antiguo 06/03/2013, 01:42
 
Fecha de Ingreso: diciembre-2008
Mensajes: 84
Antigüedad: 15 años, 4 meses
Puntos: 0
Base de datos para varios idiomas

Necesito opiniones...

Estoy haciendo una web en dos idiomas con idea de que en un futuro se puedan añadir otros.

De momento he organizado el contenido en dos tablas una para cada idioma, pero no se si seria mas correcto organizarlo en una sola tabla con campos por ejemplo nombre_es, nombre_en, nombre_fr...

o tablas con nombres tipo paginas_es donde haya un campo nombre, paginas_en donde el campo tambien se llame nombre...

Agradezco todas las opiniones.
  #2 (permalink)  
Antiguo 06/03/2013, 10:31
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 3 meses
Puntos: 447
Respuesta: Base de datos para varios idiomas

Hola rafamadrile...

En realidad el modelado de BD no tiene una única respuesta correcta, es decir, depende de muchos factores que debes considerar para poder decir cuál es el modelo que mejor se aplica a tu BD...

Por ejemplo, todas, absolutamente todas tus páginas van a estar en todos los idiomas??? esto rara vez ocurre, por lo que la opción de colocar una columna adicional por cada idioma no sería conveniente, pues muchos de los registros podrían venir como vacíos, lo cual implica un mal diseño de páginas.

Ahora bien, la opción de duplicar las tablas por cada idioma, puede que tampoco sea del todo apropiada, pues si hay características similares entre las páginas, estarías duplicando información...

En este caso hablando en términos de E-R podrías pensar que tus páginas principales (por ejemplo en español) tienen una relación de 0 a n con tus páginas en otro idioma (por ejemplo Inglés) de tal suerte que tendrías que tener dos tablas... una donde almacenes todas las páginas en español y otra donde tengas aquellas que tienen una traducción, de tal manera que tengas algo como esto:

Código MySQL:
Ver original
  1. mysql> SELECT * FROM paginas_es;
  2. +------+---------------------------------+--------+------------+
  3. | id   | descripcion                     | color  | otro_campo |
  4. +------+---------------------------------+--------+------------+
  5. |    1 | Esto es una pagina en espanol   | azul   |         12 |
  6. |    2 | Esta pagina no tiene traduccion | green  |         17 |
  7. |    3 | Esta pagina tampoco             | red    |         15 |
  8. |    4 | pero esta si                    | yellow |         19 |
  9. +------+---------------------------------+--------+------------+
  10. 4 rows in set (0.00 sec)
  11.  
  12. mysql> SELECT * FROM paginas_in;
  13. +------+-----------------------------------+
  14. | id   | descripcion                       |
  15. +------+-----------------------------------+
  16. |    1 | This is a page written in english |
  17. |    4 | and this too                      |
  18. +------+-----------------------------------+
  19. 2 rows in set (0.00 sec)

Así, puedes unir las dos tablas con un LEFT JOIN y listo. Pero te repito, tendrías que analizar bien la información que vas a almacenar.

saludos
Leo.

Etiquetas: campo, campos, idiomas, tabla
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 23:55.