2010-10-04 98 views
1

我有兩個表都我工作像下面的概念...MySQL表結構和設計

當任何記錄將被插入第一個表格的「身份證」(「身份證」是獨一無二的,AUTO_INCREMENT),我想使用這個ID值進一步插入我的第二個表(這意味着id將是外鍵)。我應該如何設計我的表?

  1. 如果我插入值,並進一步讀取最後插入的值,以在第二表再次插入那麼就會有多個查詢執行用於單次插入,這可能需要更多的時間執行在MySQL。

  2. 如果我將在額外的表(counter_id_table),將保持與自動遞增的id值。當任何新的記錄將要插入第一我將獲取'counter_id_table'的值,這個值將是id我的第一個表,這個值將是第二個表中的外部id。當我從'counter_id_table'中再次獲取值時,我將在一次增量後更新。

我應該如何設計我的表以便更好地執行?

回答

1

第一個選項是它通常是如何完成的。在插入查詢之後,您可以使用MySQL的mysql_insert_id()來檢索您插入的條目的ID。不要擔心速度或負載,這種情況發生在幾分之一秒內,MySQL可以在睡眠中做到這一點。

所以你會得到這樣的事情:

`user` 
- id 
- name 
- etc 

`user_stuff` 
- id 
- userId // foreign key 
- stuff 
- etc 

$sql = "INSERT INTO user (name) VALUES ('foo')"; 
mysql_query($sql) or die(mysql_error()); 

$userId = mysql_insert_id(); 

$sql = "INSERT INTO user_stuff (userId, stuff) VALUES ($userId, 'stuff')"; 
mysql_query($sql) or die(mysql_error());