假設在MySQL與同桌的兩排在一起我有一個簡單的MySQL表看起來像這樣:戰略上的INSERT
CREATE TABLE `my_table` (
`id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`name` VARCHAR(8) NOT NULL
) ENGINE = MYISAM ;
我想創建涉及對方兩行。我考慮過兩種方法。
第一個策略:在表中添加一個「related_to」字段。
我正在使用AUTO_INCREMENT來計算ID,我需要5個步驟才能做到這一點。
- INSERT INTO
my_table
(name
)VALUES('abc'); - 檢索插入ID(我們稱之爲$ first_id)
- INSERT INTO
my_table
(name
,related_to
)VALUES( '某某', '$ last_id'); - 檢索插入ID(我們稱之爲$ second_id)
- UPDATE
my_table
SETrelated_to
= '$ second_id' WHEREid
= '$ first_id';
第二個策略:一個單獨的表與兩個ID的鏈接。也可以通過5個步驟來完成。
- INSERT INTO
my_table
(name
)VALUES('abc'); - 檢索插入ID(我們稱之爲$ first_id)
- INSERT INTO
my_table
(name
)VALUES( 'XYZ'); - 檢索插入ID(我們稱之爲second_id $)
- INSERT INTO
link_table
(item1
,item2
)VALUES( '$ first_id', '$ second_id');
哪種方式最好在效率方面,還是有這樣做,我很想念的一個更有效的方法?
謝謝你的建議。
實際上,只要related_to字段是1:1關係,我會說第一個解決方案是更規範化的。關係表將暗示存在1:多關係。 – 2011-01-06 23:26:12
@Jordy:同意,但問題說'2行':)將編輯... – 2011-01-06 23:57:10