數據庫該不該用外鍵?
用外鍵的原因,是作為約束條件,避免錯誤數據插入,屬于一致性的范疇。
不用的原因,是在超大數據集下,大批量的插入在外鍵約束下會很慢,傳統數據庫導入數據的時候,一般都建議關閉外鍵。若在互聯網場景下,數據庫表橫向拆分后,事實上數據庫端已經做不到執行外鍵約束,比如主表已經拆分到不同實例中去了的情況。刪除問題上,這點本身就是需要接受的,操作代價無法避免,比如分庫分表要求的數據冗余,如果要刪除,只能通過多次的刪除搞,這點是對分布式事務的要求,單機是無法做到的,只能在程序端控制。所以,不提前提條件和場景,單說啥需要或者不需要的,都是偽科學。