gpt4 book ai didi

sql - Mysql表结构与设计

转载 作者:行者123 更新时间:2023-11-29 01:00:08 25 4
gpt4 key购买 nike

我有两个表,我都按照下面的概念工作......

当任何记录将插入第一个表的'id'时('id'是唯一的并且auto_increment),我想使用这个id值进一步插入我的第二个表(这意味着id将是外键)。如何我应该设计我的 table 吗?

  1. 如果我正在插入值并进一步获取最后插入的值以再次插入到第二个表中,那么对于单个插入将执行更多查询,这可能需要在 mysql 中执行更多时间。

  2. 如果我将创建一个额外的表 (counter_id_table),它将保持 id 值并自动递增。当任何新记录将首先插入时,我将获取“counter_id_table”的值,这个值将是我的第一个表的 ID,这个值将是第二个表中的外部 ID。当我再次从“counter_id_table”获取值时,我将在一次增量后更新。

我应该如何设计我的表以更好地执行?

最佳答案

第一个选项是通常的做法。您可以使用 MySQL 的 mysql_insert_id() 在插入查询之后立即检索您插入的条目的 ID。不要担心速度或负载,这在几分之一秒内发生,MySQL 可以在 sleep 中完成。

所以你会得到这样的东西:

`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());

关于sql - Mysql表结构与设计,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3857598/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com