2012-07-04 128 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