2014-09-02 62 views
-1

使用查詢(JOINS)在MySQL數據庫中創建表關係的優點和缺點與使用外鍵和參照完整性約束的DDL執行操作相反?我收到了一個沒有關係的數據庫(沒有FK)來確定表之間的關係。正在查詢數據時,會在JOINS上創建關係。MySQL數據庫外鍵

回答

0

使用外鍵的主要原因是數據在數據庫中始終保持一致。這是從連接「獨立」的 - 當你使用外鍵時,你仍然需要使用連接。

在MySQL中它也有一個不錯的副作用:如果你使用外鍵,你必須定義可能加速查詢的索引。

但是使用外鍵可以確保所引用的行必須存在於數據庫中。見https://en.wikipedia.org/wiki/Foreign_key

+0

感謝MrTux的快速響應。我知道你仍然在FK表上使用JOINS。我也知道用FK定義表格可以保持數據的完整性。我想我想要得到的是...是否是否設計數據庫,而不使用外鍵來定義表關係或它沒有多大關係?除了數據完整性之外,這種方式設計數據庫的主要缺點是什麼,即沒有FK?謝謝。 – 2014-09-02 11:43:17

+0

我不會再設計任何沒有FK的數據庫。唯一的缺點是插入到子表中可能會慢一點,因爲必須完成父表中鍵的存在。但我認爲它與「乾淨」且一致的數據庫相比是不可接受的。 FKs只支持MySQL中的InnoDB表,這也可能是很多數據庫不使用FK的原因,因爲這些只是MyISAM(我不建議任何 - InnoDB具有基於行的鎖定並支持事務)。 – MrTux 2014-09-02 12:15:18

+0

謝謝MrTux。確切地說,我正在尋找的那種迴應。 – 2014-09-02 12:23:07