簡體   English   中英

MySQL表的結構與設計

[英]Mysql table structure and designing

我有兩個桌子,我都像下面的概念一樣工作...

當將任何記錄插入第一個表的'id'('id'是唯一且為auto_increment)時,我想使用此id值在第二個表中進一步插入(這意味着id將為外鍵)。設計我的桌子?

  1. 如果我要插入值並進一步獲取最后插入的值以再次插入第二個表中,則對於單個插入將執行更多查詢,這可能需要更多時間在mysql中執行。

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

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

第一種選擇是通常如何進行。 您可以在插入查詢之后,使用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());

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM