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

Identity en mysql? Dos tablas con valores de id diferentes

Estas en el tema de Identity en mysql? Dos tablas con valores de id diferentes en el foro de Mysql en Foros del Web. Tengo dos tablas cada una con su campo id pero necesito que sus valores no coincidan nunca (es decir, que sean únicos entre sí). Buscando ...
  #1 (permalink)  
Antiguo 07/04/2011, 05:06
Avatar de elainemarley85  
Fecha de Ingreso: abril-2011
Mensajes: 11
Antigüedad: 13 años
Puntos: 0
Identity en mysql? Dos tablas con valores de id diferentes

Tengo dos tablas cada una con su campo id pero necesito que sus valores no coincidan nunca (es decir, que sean únicos entre sí). Buscando por la web encuentro que existe IDENTITY y pensaba poner IDENTITY(1,2) en uno e IDENTITY(2,2) en el otro, pero ahora veo que eso mysql no lo soporta. ¿Cuál es la mejor manera de conseguir esto?
  #2 (permalink)  
Antiguo 07/04/2011, 05:11
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: Identity en mysql? Dos tablas con valores de id diferentes

IDENTITY es un tipo de campo que no pertenece a MySQL, por lo que no podrás usarlo.
Por otro lado, cada PK de cada tabla es, por definición, única para cada tabla. Lo que sería bueno es que nos explicases cómo estás usando esas dos claves de tablas distintas para necesitar que tengan valores diferentes.
¿Qué problema se produce y qué es lo que estás tratando de hacer?
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 07/04/2011, 05:15
Avatar de elainemarley85  
Fecha de Ingreso: abril-2011
Mensajes: 11
Antigüedad: 13 años
Puntos: 0
Respuesta: Identity en mysql? Dos tablas con valores de id diferentes

Seguramente esté mal diseñado, pero no puedo cambiar las tablas (lo que es la estructura) así a las bravas (es tema del curro).

Tengo dos tablas con productos, cada una tiene una serie de atributos diferente, solo comparten 3: id, nombre e imagen del producto.

Luego tengo una tercera tabla que es una cesta de la compra que basicamente lo que tiene es la id del producto comprado y la id de la cesta. En la cesta puedo insertar productos de cualquiera de las dos tablas.
  #4 (permalink)  
Antiguo 07/04/2011, 05:30
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: Identity en mysql? Dos tablas con valores de id diferentes

Ya veo. El problema que tienes es que la estructura de "productos" está mal diseñada.
El hecho que tengas diferentes tipos de productos con diferentes atributos no significa solamente que esos atributos requieren tablas distintas, significa que tienes una jerarquía (herencia), que en tu caso se diseña poniendo:
Cita:
PRODUCTO(producto_id, nombre, imagen_file)
PRODUCTO_1(producto_id, ....)
PRODUCTO_2(producto_id, ....)
...
Donde ,todos los productos se identifican en la misma tabla, pero los detalles de categoría o tipo se ponen en tablas dependientes, cuya PK es heredada de la tabla principal (FK).

Esto te puede dar una idea de cómo se diseña una jerarquía (este es algo complejo, pero sirve):


Infortunadamente dices que no lo puedes modificar para corregir el error (bastante serio, como verás por el problema que te causa). En ese caso lo único que te resta hacer es agregarle a la cesta un campo adicional que te permita identificar la tabla de origen, pero eso te exigirá luego gestionar los detalles de las consultas a través de programación en la aplicación web...

Hubiese sido más fácil modificar la base. ¿No hay posibilidades de convencer al que lo dirige?
__________________
¿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 07/04/2011, 05:32
Avatar de elainemarley85  
Fecha de Ingreso: abril-2011
Mensajes: 11
Antigüedad: 13 años
Puntos: 0
Respuesta: Identity en mysql? Dos tablas con valores de id diferentes

Lo voy a intentar porque esto traerá problemas posteriores cuando se añadan nuevos productos. Gracias de todas maneras, el identity lo hubiese resuelto, aunque hubiese sido solo un apaño.
  #6 (permalink)  
Antiguo 07/04/2011, 05:36
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: Identity en mysql? Dos tablas con valores de id diferentes

Para usar algo semejante a un IDENTITY tienes que olvidarte de las PK numéricas y autoincrementales. Tienes que volver a la definición de PK del modelo E-R y usarla al pie de la letra.
En el caso de los productos bien puedes usar el código correspondiente al EAN13 (código de barras). Con ése jamás tendrás repeticiones.
__________________
¿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 07/04/2011, 05:37
Avatar de Heimish2000  
Fecha de Ingreso: enero-2011
Ubicación: Madrid
Mensajes: 844
Antigüedad: 13 años, 3 meses
Puntos: 89
Respuesta: Identity en mysql? Dos tablas con valores de id diferentes

Una manera de hacerlo (aunque es un parche, la manera buena ya te la han explicado) es crear una tabla que sea un contador e insertar el valor que tenga esa tabla. Al hacer un insert en cualquiera de las tablas de productos, con un trigger, aumentas ese contador que siempre contendrá el primer ID libre para tus productos.
  #8 (permalink)  
Antiguo 07/04/2011, 05:56
Avatar de elainemarley85  
Fecha de Ingreso: abril-2011
Mensajes: 11
Antigüedad: 13 años
Puntos: 0
Respuesta: Identity en mysql? Dos tablas con valores de id diferentes

No se puede cambiar porque por lo visto la parte de administrador (la que inserta productos nuevos) ya está implementada y es un jaleo, habría que cambiarlo todo. Lo del código de barras puede ser una idea.

Etiquetas: diferentes, 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 15:31.