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

IDs unicos en tablas diferentes (ayuda)

Estas en el tema de IDs unicos en tablas diferentes (ayuda) en el foro de Mysql en Foros del Web. Hola Tengo un sitio con 3 tipos de productos diferentes. (ej: alimentos, electronicos y muebles) Necesito ingresar los productos en 3 tablas diferentes , dependiendo ...
  #1 (permalink)  
Antiguo 13/05/2010, 16:20
 
Fecha de Ingreso: diciembre-2003
Mensajes: 310
Antigüedad: 21 años
Puntos: 4
IDs unicos en tablas diferentes (ayuda)

Hola
Tengo un sitio con 3 tipos de productos diferentes. (ej: alimentos, electronicos y muebles)

Necesito ingresar los productos en 3 tablas diferentes , dependiendo del tipo de producto.
Por ej: los electronicos en la tabla 1, los alimentos en la tabla 2 y los muebles en la tabla 3.

Pero, necesito que los id's de cada producto , no se repitan en ninguna de las 3 tablas. Es decir, q el id de cada producto sea unico, esté en la tabla que esté.

Esto lo necesito porque luego habra un carrito de comprar q agregará los productos por ID, pero pueden ser de diferente tipo.

Alguien sabe como debo estructurar la base MySQL para poder hacer que los ids sean unico e irrepetibles en las 3 tablas???

(los estoy haciendo en PHP + MySQL)
gracias!
  #2 (permalink)  
Antiguo 13/05/2010, 16:29
Avatar de Vun
Vun
Colaborador
 
Fecha de Ingreso: agosto-2009
Ubicación: Benalmádena, España
Mensajes: 2.265
Antigüedad: 15 años, 4 meses
Puntos: 150
Respuesta: IDs unicos en tablas diferentes (ayuda)

Yo nunca he escuchado hacer eso, ¿es obligatorio tener 3 tablas pudiendo tener 1 sola? Es un suspenso directo en un examen de base de datos jeje
  #3 (permalink)  
Antiguo 13/05/2010, 16:32
 
Fecha de Ingreso: diciembre-2003
Mensajes: 310
Antigüedad: 21 años
Puntos: 4
Respuesta: IDs unicos en tablas diferentes (ayuda)

Cita:
Iniciado por Vun Ver Mensaje
Yo nunca he escuchado hacer eso, ¿es obligatorio tener 3 tablas pudiendo tener 1 sola? Es un suspenso directo en un examen de base de datos jeje
Pienso que los productos tienen que ir en 3 table diferentes, ya que los campos de cada tipo de producto son diferentes.
Es decir, los electronicos tienen por ej: tamaño, valor, voltios, ete etc.
Los muebles tienen: medidas, tipo de madera, etc etc
Y los alimentos: caracteristicas, fecha de vencimiento, etc etc.

Entonces si pongo todos juntos, se me van a mezclar....
Digo, como para ser mas ordenado.

no?
Alguna sugerencia?
  #4 (permalink)  
Antiguo 13/05/2010, 16:36
Avatar de Vun
Vun
Colaborador
 
Fecha de Ingreso: agosto-2009
Ubicación: Benalmádena, España
Mensajes: 2.265
Antigüedad: 15 años, 4 meses
Puntos: 150
Respuesta: IDs unicos en tablas diferentes (ayuda)

Podrias hacer una tabla PRODUCTOS tal que:

Nombre
Tipo
Dato1
Dato2
Dato3
Dato4
Dato5



Y ya con PHP tu mismo controlas que dependiendo del tipo de producto que sea, muestra la informacion con las etiquetas correctamente, pero la informacion esta ahi en una sola tabla. Yo uso algo muy similar en mi juego web, para controlar los pasos de las misiones, que son muy distintos entre si, pero con php miro que tipo de paso es y ya muestro la informacion adecuadamente.
  #5 (permalink)  
Antiguo 13/05/2010, 17:12
 
Fecha de Ingreso: diciembre-2003
Mensajes: 310
Antigüedad: 21 años
Puntos: 4
Respuesta: IDs unicos en tablas diferentes (ayuda)

Cita:
Iniciado por Vun Ver Mensaje
Podrias hacer una tabla PRODUCTOS tal que:

Nombre
Tipo
Dato1
Dato2
Dato3
Dato4
Dato5



Y ya con PHP tu mismo controlas que dependiendo del tipo de producto que sea, muestra la informacion con las etiquetas correctamente, pero la informacion esta ahi en una sola tabla. Yo uso algo muy similar en mi juego web, para controlar los pasos de las misiones, que son muy distintos entre si, pero con php miro que tipo de paso es y ya muestro la informacion adecuadamente.
Claro, eso mismo estaba pensando.
La info queda un poco mezclada, eso no me agrada mucho.
Pero bueno, podria ser una solucion.

Por otro lado, tendrias alguna idea de como armar el carrito de compra con variables de sesiones??
1000 gracias
  #6 (permalink)  
Antiguo 13/05/2010, 18:38
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: IDs unicos en tablas diferentes (ayuda)

En realidad necesitas cuatro tablas:

1) Producto(producto_id, nombre, descripcion, ...)
Esta tabla debe contener atributos comunes entre productos.

2) Electrónicos(producto_id (PK/FK), ...)
3) Alimentos(producto_id (PK/FK), ...)
4) Muebles(producto_id (PK/FK), ...)

Llevan la PK de la primera tabla como FK, y con los datos que le sean propios al tipo de producto.

Es un sistema más complejo para laas inserciones, pero mucho más eficiente a la hora de las consultas, y respeta la 3FN.
__________________
¿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 13/05/2010, 23:29
 
Fecha de Ingreso: diciembre-2003
Mensajes: 310
Antigüedad: 21 años
Puntos: 4
Respuesta: IDs unicos en tablas diferentes (ayuda)

Cita:
Iniciado por gnzsoloyo Ver Mensaje
En realidad necesitas cuatro tablas:

1) Producto(producto_id, nombre, descripcion, ...)
Esta tabla debe contener atributos comunes entre productos.

2) Electrónicos(producto_id (PK/FK), ...)
3) Alimentos(producto_id (PK/FK), ...)
4) Muebles(producto_id (PK/FK), ...)

Llevan la PK de la primera tabla como FK, y con los datos que le sean propios al tipo de producto.

Es un sistema más complejo para laas inserciones, pero mucho más eficiente a la hora de las consultas, y respeta la 3FN.
ok genial.
Entonces por ej, el proceso de insercion seria asi:
- agrega registro en tabla 1 (productos) con el id en auto_increment.
- si fuera un vino el producto, entonces agregaria en la tabla 2 (alimentos) un registro, pero el id de ese registro deber ser el mismo que el id del producto en la tabla 1

no?

Ahora lo que no comprendo bien es que campos tengo que configurar como PK y cuales como FK en las diferentes tablas.

Y por otro lado, luego cuando quiera buscar un producto por el ID, deberia primero recorrer la tabla 1, y si lo encuentra, luego recorrer las 3 tablas para encontrar el registro con ese mismo ID, y obtenter los campos especificos de ese producto.
No es mucho recorrido????

1000 gracias
  #8 (permalink)  
Antiguo 14/05/2010, 03:42
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: IDs unicos en tablas diferentes (ayuda)

Cita:
Ahora lo que no comprendo bien es que campos tengo que configurar como PK y cuales como FK en las diferentes tablas.
Eso es elemental:
La PK de las tablas ALimento, Electrónica, Muebles, es el mismo valor con que esos mismos datos figuran en la tabla Productos, y es ese campo (producto_id) al que se declara tanto PK como FK.
Es el caso de manual de una entidad débil que no tiene clave propia, sino que hereda la clave de otra superior o fuerte.


Cita:
Y por otro lado, luego cuando quiera buscar un producto por el ID, deberia primero recorrer la tabla 1, y si lo encuentra, luego recorrer las 3 tablas para encontrar el registro con ese mismo ID, y obtenter los campos especificos de ese producto.
No es mucho recorrido????
No. la decisión de qué tablas se cruzan (y no es leer la primera para después leer las otras, eso es un JOIN de manual), es una decisión que debes implementarla en la aplicación. Al menos así se hace.
Simplemente tomas un atributo o de la página o de la primera tabla, donde especificas el tipo de producto, para definir cuál JOIN vas a hacer...

Piénsalo y veras que es muy simple.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Etiquetas: diferentes, ids, tablas
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 14:23.