Mysql表结构及设计

发布于 2024-09-26 01:02:48 字数 414 浏览 2 评论 0原文

我有两个表,我的工作方式如下概念...

当任何记录将插入第一个表的“id”时(“id”是唯一的且自动增量),我想使用此 id 值在第二个表中进一步插入(这意味着 id 将是外键)。我应该如何设计我的表?

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

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

我应该如何设计我的表以获得更好的执行效果?

I have two tables both i am working like below concept...

When any record will be inserted 'id' of first table ('id' is unique and auto_increment), I want to use this id value for further insertion in my second table (that means id will be foreign key).How should I should to design my table?

  1. If i am inserting values and further fetching last inserted value to again insert in second table then there will more query execute for a single insertion and this may take more time execution in mysql.

  2. If i will make on extra table (counter_id_table) that will keep on id value with auto increment.When any new record will be going to insert first i will fetch value of 'counter_id_table' and this value will be the id of my first table and this value will be foreign id in second table.When i will fetch value from 'counter_id_table' again i will update with after one increment.

How i should to design my table for better execution?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

凉月流沐 2024-10-03 01:02:48

第一个选项是通常的做法。您可以在插入查询之后使用 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());

The first option is how it's usually done. You can use MySQL's mysql_insert_id() to retrieve the id of the entry you inserted, right after the insert query. Don't worry about speed or load, this happens in a fraction of a second and MySQL can do this in its sleep.

So you'll get something like this:

`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());
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文