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

Insertar datos FK

Estas en el tema de Insertar datos FK en el foro de Mysql en Foros del Web. Hola denuevo a todos.Ya me da pena con tanta pregunta pero pues muchos de ustedes compañeros son expertos y espero que tengan tiempo para nosotros ...
  #1 (permalink)  
Antiguo 21/07/2010, 14:53
 
Fecha de Ingreso: junio-2010
Mensajes: 61
Antigüedad: 13 años, 10 meses
Puntos: 0
Insertar datos FK

Hola denuevo a todos.Ya me da pena con tanta pregunta pero pues muchos de ustedes compañeros son expertos y espero que tengan tiempo para nosotros los novatos.



Mi problema es el siguiente.


Tengo una bd y en ella tengo tablas dependientes de otra en pocas palabras tiene fk de otras tablas y por ese motibo no me dejan insertar datos si no tiene la fk de el registro de otra tabla.

La pregunta es la siguiente.

¿COMO PUEDO INSERTAR DATOS EN UNA TABLA QUE DEPENDE DE OTRA?

estas esuna de las tablas que tengo .

-- TABLE: perfil
--

CREATE TABLE perfil(
id_perfil INT AUTO_INCREMENT,
id_grupo INT,
nombre_perfil VARCHAR(150) UNIQUE NOT NULL,
id_usuarios INT NOT NULL,
PRIMARY KEY (id_perfil)
)TYPE=INNODB
;


ahi me pide a que grupo pertenece el perfil , bien esa parte la puedo meter en un select y eligir a que grupo pertenece.


Pero tambien me pide el id de usario y si apenas se esta registrando
¿ como sabre el id del usuario?


porfavor es urgente expertos ayudenme.
  #2 (permalink)  
Antiguo 21/07/2010, 19:03
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: Insertar datos FK

Si el ID es autonumérico, simplemente inmediatamente luego de realizar la inserción recuperas el ID generado con la función LAST_INSERT_ID().
Si usas PHP para la aplicación, este lenguaje tiene una función directa para ello (mysql_insert_id()), desde la programación misma.
En cualquier caso, tienes que tener cuidado con no generar dependencias circulares entre las 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)
  #3 (permalink)  
Antiguo 22/07/2010, 10:11
 
Fecha de Ingreso: junio-2010
Mensajes: 61
Antigüedad: 13 años, 10 meses
Puntos: 0
Respuesta: Insertar datos FK

Cita:
Iniciado por gnzsoloyo Ver Mensaje
Si el ID es autonumérico, simplemente inmediatamente luego de realizar la inserción recuperas el ID generado con la función LAST_INSERT_ID().
Si usas PHP para la aplicación, este lenguaje tiene una función directa para ello (mysql_insert_id()), desde la programación misma.
En cualquier caso, tienes que tener cuidado con no generar dependencias circulares entre las tablas.


OK... y si todos los id de mis tablas son auto incrementables, espero que eso no cause problemas.

La ultima parte , me dices que tenga cuidado con generar dependeancias circulares entre tablas ccomo es eso ¿?.
  #4 (permalink)  
Antiguo 22/07/2010, 11:28
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: Insertar datos FK

Si A depende de B, C depende de B y A depende de C, es imposible llenar ninguna tabla...
Es un error muy común en los que se inician en el diseño de bases relacionales.
__________________
¿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 22/07/2010, 13:57
 
Fecha de Ingreso: junio-2010
Mensajes: 61
Antigüedad: 13 años, 10 meses
Puntos: 0
Respuesta: Insertar datos FK

Cita:
Iniciado por gnzsoloyo Ver Mensaje
Si A depende de B, C depende de B y A depende de C, es imposible llenar ninguna tabla...
Es un error muy común en los que se inician en el diseño de bases relacionales.
AAAAAAA ok es un circulo si en en la tabla A me pide la fk de la B y en la C la fk de B y A la fK C.



pues claro es imposible yenarlo por que no te dejaria insertar amenos que fuese opsional creo jejeje


pero no no me pasa eso. creo.



Pero aun no soluciono el problema.. no se si me explique amigo.


Tengo la tabla de perfil y en ella me pide el id del usuario pero si apenas lo estoy registrando aun no se guarda en la base de datos por lo tanto no tiene id..

Se supone que cuando un usuario se registre se le dara un perfil y como registrar ese perfil si me ace falta el id del usuario.¿?


O un tip que me proporciones abusando de tu tiempo y experiencia porfavor.

Última edición por RENELOPEZ; 22/07/2010 a las 14:04
  #6 (permalink)  
Antiguo 22/07/2010, 14:03
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: Insertar datos FK

Cita:
Tengo la tabla de perfil y en ella me pide el id del usuario pero si apenas lo estoy registrando aun no se guarda en la base de datos por lo tanto no tien id..

Se supone que cuando un usuario se registre se le dara un perfil
La respuesta, entonces, es obvia: Son dos INSERT separados, el usuario debe insertarse en su tabla primero y allí recuperar el ID...
¿Cuál es el problema? ¿No se registra o es que está en una transacción todavía no consolidada?
__________________
¿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 22/07/2010, 14:23
 
Fecha de Ingreso: junio-2010
Mensajes: 61
Antigüedad: 13 años, 10 meses
Puntos: 0
Respuesta: Insertar datos FK

Cita:
Iniciado por gnzsoloyo Ver Mensaje
La respuesta, entonces, es obvia: Son dos INSERT separados, el usuario debe insertarse en su tabla primero y allí recuperar el ID...
¿Cuál es el problema? ¿No se registra o es que está en una transacción todavía no consolidada?
exacto segun io apenas se esta registrando por eso no tengo la id del usuario..
Y la alternativa que me das es que inserte primero en la tabla de usuario y despues tomar el id. pero tambien tengo otra tabla que depende de el id de usuario el cual es la tabla de persona.

en la tabla de persona ban los datos personales como nombres,apellidos,etc

y si tomo tu alternativa el usuario tendria contraseña y paswoord y podria tener un perfil asta ahi se solucionaria el problema . pero si el usuario ya no sigue con el registro se guardarian esos datos. pero sus datos personales que ban en la tabla persona no se registrarian.

en fin creo que la solucion mas ovia es aser lo paso por paso que el usuario inserte en las tablas que no dependan de otras y que cuando acabe de llenar los campos de esas tablas que le pinche un boton siguiente y que ene se boton guarde y envie otra pagina para proseguir con los datos que faltan o tu que dices?
  #8 (permalink)  
Antiguo 22/07/2010, 16: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: Insertar datos FK

Cita:
y si tomo tu alternativa el usuario tendria contraseña y paswoord y podria tener un perfil asta ahi se solucionaria el problema . pero si el usuario ya no sigue con el registro se guardarian esos datos. pero sus datos personales que ban en la tabla persona no se registrarian.
Creo que estás perdiendo la linea del proceso:
No se deben hacer las inserciones en la medida que se van pasando los formularios o pantallas. No. Se deben hacer cuando ya hayas recolectado todos los datos.
Esto significa que vas almacenando los datos que van ingresando y las selecciones hasta el final del proceso (cosa que se hace en la aplicación y no en la base), y cuando el usuario da el OK final allí disparas todos los procesos de inserción en secuencia.
En los hechos, el usuario no necesita saber cuál es su número de ID por la simple razón de que el no se identificará con ese número sino con su username.
Ahora bien, si tu preguntas como puedes validar un username sin antes ingresarlo, bueno, eso se puede hacer de muchas formas. Yo sugiero usar una tabla de transacción que almacene temporalmente el nombre del usuario que está por ser ingresado de modo que si hay usuarios concurrentes en el servicio se pueda establecer qué usernames ya están reservados y por tanto no se produzcan confusiones.
Pero ese es el único punto donde puedes tener algún problema, y como ves, no es tanto problema.

Recuerda: Las validaciones se hacen siempre en la aplicación, tomando datos consultados de la base, pero eso no significa que debas ir ingresando datos antes de que el usuario de el OK definitivo.

En realidad lo que plateas se puede hacer, pero requiere que conozcas el concepto de transacciones en bases de datos y de isolation, ycreo que es demasiado por el momento.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #9 (permalink)  
Antiguo 22/07/2010, 19:48
 
Fecha de Ingreso: junio-2010
Mensajes: 61
Antigüedad: 13 años, 10 meses
Puntos: 0
Respuesta: Insertar datos FK

Cita:
Iniciado por gnzsoloyo Ver Mensaje
Creo que estás perdiendo la linea del proceso:
No se deben hacer las inserciones en la medida que se van pasando los formularios o pantallas. No. Se deben hacer cuando ya hayas recolectado todos los datos.
Esto significa que vas almacenando los datos que van ingresando y las selecciones hasta el final del proceso (cosa que se hace en la aplicación y no en la base), y cuando el usuario da el OK final allí disparas todos los procesos de inserción en secuencia.
En los hechos, el usuario no necesita saber cuál es su número de ID por la simple razón de que el no se identificará con ese número sino con su username.
Ahora bien, si tu preguntas como puedes validar un username sin antes ingresarlo, bueno, eso se puede hacer de muchas formas. Yo sugiero usar una tabla de transacción que almacene temporalmente el nombre del usuario que está por ser ingresado de modo que si hay usuarios concurrentes en el servicio se pueda establecer qué usernames ya están reservados y por tanto no se produzcan confusiones.
Pero ese es el único punto donde puedes tener algún problema, y como ves, no es tanto problema.



Recuerda: Las validaciones se hacen siempre en la aplicación, tomando datos consultados de la base, pero eso no significa que debas ir ingresando datos antes de que el usuario de el OK definitivo.

En realidad lo que plateas se puede hacer, pero requiere que conozcas el concepto de transacciones en bases de datos y de isolation, ycreo que es demasiado por el momento.







AAAAAAAAAA ok .


Entonces lo que me tratas de explicar es que el usuario llenara todos los campos del formulario y al final se dispararan cuando pinche el boton de guardar. Y en ese momento se ejecutaran los insert.

Supongo que para ejecutar todo eso necesitare usar el UPDATE y INER JOIN.

me podrias ayudar con un ejemplo con el cual me pueda guiar.


Lo siento amigo lo que pasa es qe apenas estoy terminando mi curso y estoy asiendo mi proyecto final en una empresa y pues soy un novato de primera.


Espero no ser tan molesto y espero y me comprendas.


Te agradesco por tu ayuda.

Etiquetas: Ninguno
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

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 02:42.