Título: relacion de dos tablas Publicado por: jecavi20 en 4 Septiembre 2013, 01:24 am buenas noches tengo un problema de relaciones entre dos tablas y soy muy novato en el tema y espero que aqui me ayuden a resolverlo gracias de antemano
estoy haciendo un sistema de un censo donde las personas se registran con nombre apellido cedula y registran a sus familiares con sus nombre apellidos y su parentesco con el jefe familiar, tengo una tabla para el jefe familiar y otra para los parientes la tabla del jefe familiar id_jefefamiliar cedula nombre apellido y la tabla de los prientes id_pariente cedula nombre apellido tipo_parentezco pero no se como relacionarlos para que a la hora de la consulta se relacionen los parientes con su respectivo jefe familiar ya que los id de las dos tablas son autoincrementales y no se repiten, como podria hacer la relacion de un jefe familiar a muchos parientes gracias de antemano por su colaboracion Título: Re: relacion de dos tablas Publicado por: Carloswaldo en 4 Septiembre 2013, 04:41 am A mi se me ocurriría organizarlo de otra manera.
Teniendo una tabla de personas: id_persona (PK) cedula nombre apellido (la cédula también podría ser el id, pues se supone que es único) Y una tabla de relaciones familiares: id_relacion (PK) id_persona (FK a personas.id_persona) id_familiar (FK a personas.id_persona) tipo_relacion Si es necesario saber si una persona es jefe familiar puedes agregar un campo tipo booleano a la tabla de personas (o el software determinaría si es jefe o no dependiendo de si tiene relaciones familiares asociadas a el) Título: Re: relacion de dos tablas Publicado por: jecavi20 en 4 Septiembre 2013, 07:03 am gracias por responder amigo
pero es que me pidieron que hiciera una tabla de jefe familiar y otra de parientes y no se como hacerlo, me han dicho que use una tercera tabla para relacionarlos mediante los ID pero ni idea :-\ necesito ayuda URGENTE!! Título: Re: relacion de dos tablas Publicado por: 1mpuls0 en 4 Septiembre 2013, 17:34 pm Me voy más como lo propone Carloswaldo pero bueno.
La solución es muy simple. "Un jefe familiar puede tener muchos parientes" Entonces tendrías que agregar una llave foranea (fk) a la tabla de parientes. Tabla: jefe_familiar id_jefefamiliar cedula nombre apellido Tabla: parientes id_pariente fk_jefefamiliar cedula nombre apellido tipo_parentezco Código
Saludos Título: Re: relacion de dos tablas Publicado por: jecavi20 en 4 Septiembre 2013, 20:08 pm gracias
pero como haria para que cuando alguien se registre y registre a sus familiares se guarde el mismo valor del id_jefefamiliar en la otra tabla fk_jefefamiliar en cada una de las filias donde estan los datos de sus familiares, por que cuando van a registrar a los familiares sale el formulario para que llene todos lo datos de todos los familiares y se guarden todos al mismo tiempo Título: Re: relacion de dos tablas Publicado por: 1mpuls0 en 4 Septiembre 2013, 20:19 pm Existen varias formas, pero depende de que herramientas (lenguaje de programación y sistema manajador de base de datos) utilices.
Título: Re: relacion de dos tablas Publicado por: jecavi20 en 4 Septiembre 2013, 20:22 pm estoy usando wampserver y phpmyadmin con lenguajes php html javascript ajax
Título: Re: relacion de dos tablas Publicado por: 1mpuls0 en 4 Septiembre 2013, 23:22 pm Entonces utiliza alguna de las siguientes funciones, puedes hacerlo tanto con php como con mysql.
php mysqli_insert_id: Devuelve el id autogenerado que se utilizó en la última consulta PDO::lastInsertId: Devuelve el ID de la última fila o secuencia insertada mysql LAST_INSERT_ID: Devuelve el último valor generado automáticamente que fue insertado en una columna AUTO_INCREMENT. Con mysql también podrías obtener el id máximo aunque no te lo recomiendo. SELECT MAX(id_tabla) AS id FROM tabla Debes tener cuidado si tu aplicación es multiusuario porque dependiendo del caso hasta sería necesario utilizar LOCK TABLES, COMMIT, ROLLBACK. http://www.php.net/manual/es/mysqli.insert-id.php Citar La función mysqli_insert_id() devuelve el ID generado por una consulta en una tabla con una columna que tenga el atributo AUTO_INCREMENT. Si la última consulta no fue una sentencia INSERT o UPDATE o si la tabla modificada no tiene una columna con el atributo AUTO_INCREMENT, está función devolverá cero. El valor de la función de SQL LAST_INSERT_ID() de MySQL siempre contiene el valor AUTO_INCREMENT generado más recientientemente, y no se restablece entre consultas. Título: Re: relacion de dos tablas Publicado por: jecavi20 en 5 Septiembre 2013, 00:18 am y estas funciones con php hirian en el archivo que guarda los valores en la base de datos?
Título: Re: relacion de dos tablas Publicado por: 1mpuls0 en 5 Septiembre 2013, 00:42 am Sí.
En el link que te pasé viene como se usa, no creas que te lo escribí por adornar el comentario. http://php.net/manual/es/mysqli.insert-id.php Código
El valor que retorna mysqli_insert_id($link) lo guardas en una variable y la usas para insertar en la tabla de parientes. Saludos. Título: Re: relacion de dos tablas Publicado por: jecavi20 en 5 Septiembre 2013, 01:22 am ha ok y la variable con id la pondria en el insert into como si fuera un registro mas para que lo guarde con cada uno de los registros (osea en todas las filas) cierto??
|