【问题标题】:Mysql table structure and designingMysql表结构与设计
【发布时间】:2011-04-20 22:22:38
【问题描述】:
我有两张桌子,我的工作方式都像下面的概念......
当任何记录将被插入第一个表的“id”时(“id”是唯一的并且自动增量),我想使用这个 id 值进一步插入我的第二个表(这意味着 id 将是外键)。如何我应该设计我的桌子吗?
如果我正在插入值并进一步获取最后插入的值以再次插入到第二个表中,那么单个插入将执行更多查询,这可能需要更多时间在 mysql 中执行。
1234563我的第一个表的 id,这个值将是第二个表中的外部 id。当我再次从“counter_id_table”获取值时,我将在一个增量后更新。
我应该如何设计我的表格以更好地执行?
【问题讨论】:
标签:
sql
mysql
database-design
data-modeling
【解决方案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());