Ver Mensaje Individual
  #4 (permalink)  
Antiguo 19/01/2009, 15:34
paloto
 
Fecha de Ingreso: abril-2007
Mensajes: 114
Antigüedad: 17 años, 8 meses
Puntos: 2
Respuesta: definicion del esquema fisico

Bien. Tenemos los siguientes productos con sus respectivos códigos:

Productos
id / nombre
1 / Ventana
2 / Cristal
3 / Marco
4 / Puerta
5 / Picaporte

Ahora nos paramos a pensar. Una ventana tiene cristal y marco (por ejemplo, pues podría tener picaporte). Una puerta tiene marco y picaporte (tambiénj podría tener cristal, pero eso no lo tenemos en cuenta) .

Entonces para realizar esto vamos a necesitar que un producto (ventana) contiene varios productos (cristal y marco) . A la vez, tenemos que un producto (marco) está contenido en varios productos (ventana y puerta) . Esto es lo que llamamos una relación de varios a varios. Y para implementar esta relación es necesario crear una tabla nueva. Esta tabla tiene por cada relación, un registro, es decir, en este caso tendrá un registro para la relación ventana-marco, otro para la relación ventana-cristal, otro para la relación puerta-marco y otro para la relación puerta-picaporte. Esta relación se establece en la tabla FormadoPor utilizando los ids de los productos que queremos relacionar. De esta forma la tabla FormadoPor nos quedaría así (sin tener en cuenta lo que hay entre paréntesis):

FormadoPor
producto_entero / producto_parte
1 (ventana) / 2 (cristal)
1 (ventana) / 3 (marco)
4 (puerta) / 3 (marco)
4 (puerta) / 5 (picaporte)

Así, si por ejemplo quieres obtener todos los productos que forman una ventana puedes hacer la siguiente consulta (en mysql):
Código:
SELECT Productos.id, Productos.nombre FROM Productos INNER JOIN FormadoPor ON FormadoPor.producto_parte=Productos.id WHERE FormadoPor.producto_entero=1
Espero que te haya quedado un poco más claro. De no ser así, insiste que lo intento de nuevo

Un saludo