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

duda con AUTO_INCREMENT

Estas en el tema de duda con AUTO_INCREMENT en el foro de Mysql en Foros del Web. estimados tengo tres tablas llamadas: tienda, direccion_fiscal, login_empresa. el duda es si usar AUTO_INCREMENT en tienda y copiar a las demas tablas o sacar el ...
  #1 (permalink)  
Antiguo 23/04/2016, 08:10
 
Fecha de Ingreso: marzo-2015
Mensajes: 96
Antigüedad: 9 años, 1 mes
Puntos: 0
duda con AUTO_INCREMENT

estimados tengo tres tablas llamadas:

tienda, direccion_fiscal, login_empresa.

el duda es si usar AUTO_INCREMENT en tienda y copiar a las demas tablas o sacar el valor maximo de la tabla principal llamada tienda.

la duda tambien es que si uso AUTO_INCREMENT y al mismo tiempo otro cliente crea su tienda se puede producir un problema de duplicidad del numero ID o tambien si saco el numero maximo otro cliente al mismo tiempo tenga el mismo numero.

cual sera la mejor forma de trabajar con codigo llave si tienes que replicar en otras tablas.
  #2 (permalink)  
Antiguo 23/04/2016, 08:43
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 AUTO_INCREMENT

No se comprende tu duda...
Primero, cada inserción genera un valor diferente, por lo que la duplicidad es imposible. Por otro, hay una función para recuperar el id autogenerado, por o que realizar la consulta que dices es innecesario.
No veo por donde tienes el problema.

Partamos de la base que el consultar "el maximo ID", sólo aplica si tienes un sistema sin concurrencias, es decir de un único usuario, cosa improbable en el escenario que describes. Y aún así, sólo se puede usar esa opción para generar el alta en la tabla TIENDA, exclusivamente. Lugo de esa alta debes haber recobrado el ID autogenerado por medio de LAST_INSERT_ID() inmediatamente, o bien programáticamente con la librería que accede a esa misma función (depende del lenguaje).
El poblado de las restantes tablas dependerá del valor ya recuperado en ese paso, y NO PUEDES hacerlo en etapas posteriores, A MENOS que tengas una query que te permita identificar unívocamente a la tienda que quieres relacionar.

¿Se va entendiendo)

En realidad, la mejor opción es NO USAR un AI, sino que la PK sea un identificador propio de la tienda en cuestión, por ejemplo su registro de identificación tributaria (del nombre de ese código dependerá del pais que lo aplica, en Argentina es el CUIT y el numero de registración comercial). DE ese modo no dependes de un ID autogenerado y su PK sería única en todo el universo de ,tiendas posible.

¿Va quedando claro?

Los ID autoincrementales son una herramienta para parchar un problema de desarrollo, y fundamentalmente por tradición heredada, no vinculada con el modelo relacional. De hecho sólo se aconseja el uso de ID incrementales si luego de llegar a la 3FN en la normalización de una BBDD, no se ha encontrado una clave candidata para identificador en una tabla dada.
Pero quiero que quede claro que ese tipo de identificadores numéricos incrementales no son parte del modelo relacional.
__________________
¿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; 23/04/2016 a las 10:16
  #3 (permalink)  
Antiguo 23/04/2016, 14:19
 
Fecha de Ingreso: marzo-2015
Mensajes: 96
Antigüedad: 9 años, 1 mes
Puntos: 0
Respuesta: duda con AUTO_INCREMENT

hola gnzsoloyo,

mejor te lo explico bien, tengo una aplicacion que crea tienda online al instante , bueno dentro de mi pagina web hay tres casillas donde debe ingresar el nombre de la tienda, usuario y contraseña, despues de haber ingresados esos datos se crea tienda. los demas datos como rut, empresa y demas lo pido cuando esta dentro del panel de control.

las tablas que tengo son:

tienda: id, nombre, ...... = donde se guarda los datos de la tienda
direccion_fiscal: id, id_tienda,..... = guarda los datos direccion para despues cobrar los meses. (puede aver mas direcciones)
login_empresa: id, id_tienda, usuario.... = credenciales usuario.

en el codigo y que no podre colocar aca ya que es muy extenso se ingresa los datos en la tabla tienda , despues con una consulta sql saco el ultimo valor y sumo 1 y despues ingreso los otros datos en las otras dos tablas con el ultimo id ingresasado y sumado 1.


sobre lo que me comentas lo entiendo super bien pero como te fijas al crear la tienda no se solicita el RUT(EN chile es un identificador unico) por ejemplo ya que lo pido despues, esto lo hago para que el cliente no tenga que ingresar tantos datos al principio. sea rapido.

usar esta opcion LAST_INSERT_ID() igual seria bueno, primera vez que lo veo.

Pero sabes ahora que tu me lo comentas sobre un identificador unico no podria solicitar el rut al crear la tienda ya que el cliente podria tener mas de una tienda y con el mismo rut, a no ser que solo se pueda un rut una tienda pero tendria que analizarlo.



saludos

Etiquetas: tabla
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 03:33.