Ver Mensaje Individual
  #4 (permalink)  
Antiguo 24/03/2017, 16:02
Avatar de gnzsoloyo
gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: Mostrar información en varios idiomas

La primera es basura como diseño, perdona que lo diga directamente.
Generaría recarga en la base toda vez que puedan existir registros donde no se hayan iincliuido todos los idiomas.
Además requiere modificar la estructura física de la tabla cada vez que se incorpore o se elimne un idioma...

Los ejemplos 2 y 3 son exactamente lo mismo conceptualmente, pero la 2 no es un modelo verdaderamente relacional. La segunda tabla no tiene razones para existir en un diseño normalizado y su uso carece de utilidad práctica.
Y recuerda que los campos de tipo dato IDENTITY no existen en todos los DBMS...

Sólo la tercera forma que pones se acerca a la correcta solución a nivel diseño y normalización.

Por otro lado faltan definiciones de PK, ademas de apuntar una FK a un campo no clave, lo que es un error.

Esto estaría mas cerca:

Código SQL:
Ver original
  1. CREATE TABLE ref_language (
  2.   Code CHAR(2) NOT NULL,
  3.   Name VARCHAR(20) NOT NULL,
  4.   PRIMARY KEY (Code)
  5. );
  6.  
  7. CREATE TABLE app_translation_entry (
  8. ProductId INT NOT NULL,
  9. Code CHAR(2) NOT NULL,
  10. Text Text NOT NULL,
  11. FOREIGN KEY (TranslationId) REFERENCES app_translation(ProductId),
  12. FOREIGN KEY (Code) REFERENCES ref_language(Code)
  13. );
  14.  
  15. CREATE TABLE app_product (
  16. ProductId INT NOT NULL,
  17. Description INT NOT NULL,
  18.         PRIMARY KEY (ProductId)
  19. );
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Última edición por gnzsoloyo; 24/03/2017 a las 16:07