2012-07-04 95 views
1

嗨我正在一个项目中,我必须保存与父子关系的数据。父子数据

的数据结构是这样的:

flight_id  child_id  Flight_name 

1    1   E213  

2    2   E333 

3    2   E444 

飞行1没有child_id所以它的父ID替换它,飞行2在每个child_id我必须把父ID 2 child_id左右。

任何想法我该怎么做?

+1

请澄清你的问题,因为我完全无法看看你在这里做什么?你希望有一个代码将航班添加到数据库中?你想建立基于关系的数据库结构(它需要两个表)? – Whisperity

回答

1

亲子关系通常以相反方式建模:孩子属于父母。想想看,一个孩子只能有一个父母,这很容易建模;但有许多孩子ID的家长很难模拟。

此外,您可以使用嵌套集a.k.a. MPTT来更轻松地查询儿童/父母。

请参阅http://mikehillyer.com/articles/managing-hierarchical-data-in-mysql/http://en.wikipedia.org/wiki/MPTT

+0

我使用Php查询保存数据第一我确定如果数据有孩子,如果它有我然后简单插入查询,然后更新它像这样$ query = mysql_query(“insert into test set flightname ='$ flight_code',childid ='0 ““); \t $ child_id = mysql_insert_id(); \t $ query = mysql_query(“update test set flightname ='$ flight_code',childid ='$ child_id'其中flightid ='$ child_id'”); – mishi

0

通常你不会存储所有的孩子ID的,但家长的ID:

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; 

你的数据会看起来像:

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

是啊,它是这样的抱歉曲解。我的意思就是像这样在我的情况下,父母是一个外键也必须保存在另一个表 – mishi

+0

插入数据后有一个孩子的父母我不知道如何添加与第二个孩子同一父母的数据。 – mishi

+0

@mishi我已经扩展了这个例子,让你感受到多个孩子到一个父母的存储方式。如果将父母存储在不同的表中,它们不是真正的父母,因为它们属于不同的模型类型。 – feeela