Datos de padres e hijos

Hola, estoy trabajando en un proyecto en el que tengo que guardar datos con una relación padre-hijo.

La estructura de datos es así:

flight_id     child_id      Flight_name 

1               1           E213    

2               2           E333

3               2           E444  

El vuelo 1 no tiene child_id por lo que su identificación principal lo reemplaza, el vuelo 2 tiene dos child_id por lo que en cada uno de child_id Tengo que poner el id de los padres.

¿Alguna idea de cómo puedo hacer eso?

preguntado el 04 de julio de 12 a las 10:07

Aclare su pregunta, ya que no puedo ver qué está tratando de hacer aquí. ¿Desea tener un código donde agregar los vuelos a la base de datos? ¿Desea configurar una estructura de base de datos basada en relaciones (entonces necesitaría dos tablas)? -

2 Respuestas

Las relaciones padre-hijo generalmente se modelan al revés: el hijo pertenece a un padre. Piénselo, un niño solo puede tener un padre, eso es fácil de modelar; pero un padre con muchas identificaciones de niños es bastante difícil de modelar.

Además, puede usar Conjuntos anidados, también conocido como MPTT, para facilitar la consulta de niños/padres.

Ver http://mikehillyer.com/articles/managing-hierarchical-data-in-mysql/ e http://en.wikipedia.org/wiki/MPTT.

Respondido 04 Jul 12, 10:07

Estoy guardando datos usando la consulta Php primero, determiné si los datos tienen un hijo, si es así, simplemente inserto una consulta y luego la actualizo de esta manera "); $child_id = mysql_insert_id(); $query=mysql_query("actualizar conjunto de prueba nombre de vuelo = '$ código_de_vuelo', id_de_niño='$id_de_niño' donde id_de_vuelo='$id_de_niño'"); - carnoso

Normalmente no almacenará todas las ID de los niños, sino las ID de los padres:

CREATE TABLE `flight` (
    `id` int(11) NOT NULL,
    `parent` int(11) DEFAULT NULL,
    `flight_name` varchar(255) NOT NULL,
    PRIMARY KEY (`id`),
    FOREIGN KEY (`parent`) REFERENCES `flight` (`id`) ON DELETE SET NULL ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

Sus datos se verían así:

id     parent    flight_name 
1      NULL      E213    
2      NULL      E333
3      2         E444  
4      2         E555  
5      2         E666  

Respondido 04 Jul 12, 11:07

sí, es así, lo siento por la mala interpretación. Quiero decir exactamente así en mi caso, el padre también es una clave externa que debe guardarse en otra tabla: carnoso

No sé después de insertar datos para un padre que tiene un hijo, ¿cómo puedo agregar datos del mismo padre con el segundo hijo? - carnoso

@mishi He ampliado el ejemplo para que tenga una idea de cómo se almacenan varios hijos de un padre. Si almacena los padres en una tabla diferente, en realidad no son de los padres, ya que son de un tipo de modelo diferente. - Feeela

@feela no estoy guardando a los padres en un modelo separado solo para ahorrar el precio relacionado con ese vuelo en particular. - carnoso

Todavía no entiendo cómo puedo agregar un segundo hijo del mismo padre. Busco mucho pero estoy confundido. - carnoso

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.