2013-05-14 55 views
0

假設有一個包含兩個表的數據庫:一個客戶表和一個國家/地區表。每個客戶行包含(除其他外)countryId外鍵。我們還假設我們正在從數據文件填充數據庫(即,它不是從UI中選擇國家的運營商)。使用外鍵添加數據庫記錄

這是什麼最佳做法?

  1. 如果一個先查詢數據庫,並得到所有ID的所有國家,然後只提供(現稱)國家ID在插入查詢?這對我的「國家」例子來說不是問題,但是如果表格中有大量記錄正在被引用呢?

  2. 還是應該插入查詢使用子查詢來獲取基於國名國號?如果是這樣,如果國家的記錄還不存在並且必須添加,該怎麼辦?

  3. 或另一種作法?還是取決於? :)

回答

0

我會建議在插入查詢中使用聯接,以獲取國家/地區id的國家/地區名稱。但是,我不知道每個SGBD是否有可能,並且您沒有對所使用的更精確。

+0

使用mysql。如果該國的記錄尚不存在會發生什麼?謝謝。 – Jimmy 2013-05-14 16:12:40

+0

嗯,我會試圖說你只需要先填寫你的國家表格......但是當談到其他數據時,它不會是正確的。在這種情況下,需要更多的編程方法:測試是否存在值,如果不插入,則使用新ID填充主表中的字段。 – 2013-05-14 16:16:29