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

Duda con diseño de BD

Estas en el tema de Duda con diseño de BD en el foro de Bases de Datos General en Foros del Web. Buenas noches, supongan que tengo una tabla "productos" y otra "proveedores". Como lo tengo modelado/diseñado la relación queda de la siguiente forma: producto: id_producto ... ...
  #1 (permalink)  
Antiguo 09/03/2011, 19:41
 
Fecha de Ingreso: marzo-2011
Ubicación: Caracas
Mensajes: 140
Antigüedad: 13 años, 1 mes
Puntos: 1
Información Duda con diseño de BD

Buenas noches, supongan que tengo una tabla "productos" y otra "proveedores". Como lo tengo modelado/diseñado la relación queda de la siguiente forma:

producto:
id_producto
...

proveedores:
id_proveedor
id_producto
id_idioma
nombre

Ahora bien, si se dan cuenta la tabla proveedores es multilenguaje entonces cuando inserto un nuevo producto se crea un registro por cada lenguaje existente con el id_producto. Por ejemplo: id_idioma=1, id_idioma=2 se crean los siguientes registros en la tabla proveedores:

Código:
|--------------|--------------|-----------|---------|
id_proveedor  id_producto  id_idioma  nombre
|--------------|--------------|-----------|---------|
       1                1                1            P1 
       2                1                2            P2
|--------------|--------------|-----------|---------|
Esta esto correcto? Como lo harían ustedes?
  #2 (permalink)  
Antiguo 10/03/2011, 01:56
Avatar de Heimish2000  
Fecha de Ingreso: enero-2011
Ubicación: Madrid
Mensajes: 844
Antigüedad: 13 años, 3 meses
Puntos: 89
Respuesta: Duda con diseño de BD

Yo sacaría el idioma a una tabla a parte porque además (supongo que id_proovedor es tu PK) de la manera que lo tienes un proovedor no puede tener dos idiomas.
  #3 (permalink)  
Antiguo 10/03/2011, 05:41
 
Fecha de Ingreso: marzo-2011
Ubicación: Caracas
Mensajes: 140
Antigüedad: 13 años, 1 mes
Puntos: 1
Respuesta: Duda con diseño de BD

No, eso q dices es incorrecto porque id_producto y id_idioma son las PK en la tabla proveedores y si es multilenguaje, fijate que tiene id_idioma=1,2 precisamente porque el 1 pertenece a un idioma y el 2 a otro idioma
  #4 (permalink)  
Antiguo 10/03/2011, 05:56
Avatar de 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: Duda con diseño de BD

No puedes poner un campo multivaluado, eso es una violación al modelo relacional. Por eso te está diciendo que el idioma debe ir en otra tabla.

Cuando tienes una relación N:N como Producto<->Idioma, los idiomas se listan en una tabla y se crea otra tabla PRODUCTO_IDIOMA(id_producto, id_idioma) que la administra.

Tal y como la estás haciendo lo único que tendrás serán problemas.

Lo mismo pasa con la relación Producto <-> Proveedor. Si hay al menos un proveedor que provea dos productos y un producto que pueda ser provisto por más de un proveedor, la relación es N:N y debe crearse una tabla independiente, con lo que el ID del proveedor no va en la tabla Producto.

Tu esquema requiere cuatro tablas...
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #5 (permalink)  
Antiguo 10/03/2011, 06:05
 
Fecha de Ingreso: marzo-2011
Ubicación: Caracas
Mensajes: 140
Antigüedad: 13 años, 1 mes
Puntos: 1
Respuesta: Duda con diseño de BD

Hmmm pero no sería una relación del tipo 1:N? O sea un producto tiene varios idiomas? Creo que así es como lo veo por eso puse el id_producto e id_idioma en la tabla proveedores. Igual no es multivaluado, lo puse así para hacer entender que tomaba dos valores diferentes: 1 y 2.
  #6 (permalink)  
Antiguo 10/03/2011, 06:06
Avatar de 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: Duda con diseño de BD

Un producto tiene varios idiomas y un idioma puede estar presente en varios productos.
Por definición, eso es una relación N:N.
Además, si puede tomar el valor 1 y 2, o le pones dos campos de idioma y limitas a dos los posibles, o lo estás haciendo multivaluado.

La relación es N:N.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #7 (permalink)  
Antiguo 10/03/2011, 06:07
 
Fecha de Ingreso: marzo-2011
Ubicación: Caracas
Mensajes: 140
Antigüedad: 13 años, 1 mes
Puntos: 1
Respuesta: Duda con diseño de BD

Ok, gracias por la ayuda

Etiquetas: bd, diseño, bases-de-datos
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 10:27.