elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.


 


Tema destacado: Recuerda que debes registrarte en el foro para poder participar (preguntar y responder)


+  Foro de elhacker.net
|-+  Programación
| |-+  Desarrollo Web
| | |-+  Bases de Datos (Moderador: Carloswaldo)
| | | |-+  relacion de dos tablas
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 Ir Abajo Respuesta Imprimir
Autor Tema: relacion de dos tablas  (Leído 4,064 veces)
jecavi20

Desconectado Desconectado

Mensajes: 20


Ver Perfil
relacion de dos tablas
« en: 4 Septiembre 2013, 01:24 »

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


En línea

Carloswaldo
Traductor
Moderador Global
***
Desconectado Desconectado

Mensajes: 4.741


Nos reservamos el derecho de ban.


Ver Perfil WWW
Re: relacion de dos tablas
« Respuesta #1 en: 4 Septiembre 2013, 04:41 »

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)


En línea

jecavi20

Desconectado Desconectado

Mensajes: 20


Ver Perfil
Re: relacion de dos tablas
« Respuesta #2 en: 4 Septiembre 2013, 07:03 »

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!!
En línea

1mpuls0


Desconectado Desconectado

Mensajes: 1.186


Ver Perfil
Re: relacion de dos tablas
« Respuesta #3 en: 4 Septiembre 2013, 17:34 »

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
  1. SELECT * FROM jefe_familiar, parientes
  2. WHERE jefe_familiar.id_jefefamiliar=parientes.fk_jefefamiliar
  3.  

Saludos
En línea

abc
jecavi20

Desconectado Desconectado

Mensajes: 20


Ver Perfil
Re: relacion de dos tablas
« Respuesta #4 en: 4 Septiembre 2013, 20:08 »

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
En línea

1mpuls0


Desconectado Desconectado

Mensajes: 1.186


Ver Perfil
Re: relacion de dos tablas
« Respuesta #5 en: 4 Septiembre 2013, 20:19 »

Existen varias formas, pero depende de que herramientas (lenguaje de programación y sistema manajador de base de datos) utilices.
En línea

abc
jecavi20

Desconectado Desconectado

Mensajes: 20


Ver Perfil
Re: relacion de dos tablas
« Respuesta #6 en: 4 Septiembre 2013, 20:22 »

estoy usando wampserver y phpmyadmin con lenguajes php html javascript ajax
En línea

1mpuls0


Desconectado Desconectado

Mensajes: 1.186


Ver Perfil
Re: relacion de dos tablas
« Respuesta #7 en: 4 Septiembre 2013, 23:22 »

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.
En línea

abc
jecavi20

Desconectado Desconectado

Mensajes: 20


Ver Perfil
Re: relacion de dos tablas
« Respuesta #8 en: 5 Septiembre 2013, 00:18 »

y estas funciones con php hirian en el archivo que guarda los valores en la base de datos?
En línea

1mpuls0


Desconectado Desconectado

Mensajes: 1.186


Ver Perfil
Re: relacion de dos tablas
« Respuesta #9 en: 5 Septiembre 2013, 00:42 »

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
  1. <?php
  2. $link = mysqli_connect("localhost", "mi_usuario", "mi_password", "world");
  3.  
  4. /* check connection */
  5. if (mysqli_connect_errno()) {
  6.    printf("Error de conexión: %s\n", mysqli_connect_error());
  7.    exit();
  8. }
  9.  
  10. mysqli_query($link, "CREATE TABLE myCity LIKE City");
  11.  
  12. $query = "INSERT INTO myCity VALUES (NULL, 'Stuttgart', 'DEU', 'Stuttgart', 617000)";
  13. mysqli_query($link, $query);
  14.  
  15. printf ("Nuevo registro con el id %d.\n", mysqli_insert_id($link));
  16.  
  17. /* drop table */
  18. mysqli_query($link, "DROP TABLE myCity");
  19.  
  20. /* close connection */
  21. mysqli_close($link);
  22. ?>
  23.  

El valor que retorna mysqli_insert_id($link) lo guardas en una variable y la usas para insertar en la tabla de parientes.

Saludos.
En línea

abc
Páginas: [1] 2 Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Relacion ps2!!!
Juegos y Consolas
to_rayao 7 1,935 Último mensaje 5 Enero 2007, 23:25
por -Elkiot-
Duda tablas MyISAM como se hace diagrama entida relacion
Bases de Datos
sionoo 5 6,243 Último mensaje 16 Mayo 2010, 01:46
por sionoo
no inserta datos tablas relacion referencial uno a muchos
Desarrollo Web
magevi 0 688 Último mensaje 17 Febrero 2015, 21:57
por magevi
Problema con relación 1:1
Bases de Datos
neveldine 4 1,237 Último mensaje 5 Enero 2016, 22:59
por Hadess_inf
Ayuda urgente con relación de tablas en MySQL
Dudas Generales
itzg3 0 316 Último mensaje 15 Julio 2018, 00:24
por itzg3
Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines