2010-10-04 85 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());