簡體   English   中英

如果我沒有在MySQL中定義外鍵就對數據庫建模怎么辦?

[英]What if I model a database without defining foreign keys in MySQL?

方案1:外鍵定義正確

方案2:關於記錄的刪除和更新,我可以確保在編寫API而不定義任何FK的情況下不會留下任何孤立的數據。 另外我會在插入時檢查數據完整性

那么這兩種情況之間有什么區別? 我只想知道使用FK(定量分析)可以獲得什么好處。 在方案1中,我能否獲得比2更好的性能? 我是MySQL數據庫設計的新手。

性能差異...

FK檢查必須通過索引到達另一個表中以進行完整性檢查。 然而...

情況1:簡單FK:

在許多情況下,您可以通過了解應用程序代碼的流程來確保自己“無法”發生某些 FK違規。 例如,當您在一行中插入兩個表(並且檢查了錯誤等),而第二個表指向您剛剛插入的第一個表的行時,則FK測試是多余的,並且會損害性能(小)。

另一方面,如果您通過執行額外的SELECT “模擬” FK檢查,則性能會受到明顯影響。

情況2:級聯刪除的FK:

如果使用FK進行“級聯刪除”(等),則這可能比手動執行刪除更有效。

此外,如果您可以批處理DELETEs ,那可能比讓層疊級聯一個接一個地執行要快。

另一評論:“副作用”,例如“級聯”,(被某些人)認為是一種頑皮的編碼實踐。

但是...以上差異可能不足以對您的應用產生影響。

暫無
暫無

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

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