為什麼不推薦使用外來鍵?

2022-09-22 06:45:08 字數 579 閱讀 5015

外來鍵的優點

一、資料一致性

由資料庫自身保證資料一致性、完整性會更可靠,程式很難100%保證資料的一致性、完整性

二、er圖可靠性

有主外來鍵的資料庫設計可以增加er圖的可讀性

外來鍵的缺點

一、級聯問題

阿里巴巴的開發手冊中,就曾指出強制要求不允許使用外來鍵,一切外來鍵概念必須在應用層解決。 因為每次級聯delete或update的時候,都要級聯操作相關的外來鍵表,不論有沒有這個必要,由其在高併發的場景下,這會導致效能瓶頸

二、增加資料庫壓力

外來鍵等於把資料的一致性事務實現,全部交給資料庫伺服器完成,並且有了外來鍵,當做一些涉及外來鍵字段的增,刪,更新操作之後,需要觸發相關操作去檢查,而不得不消耗資源

三、死鎖問題

若是高併發大流量事務場景,使用外來鍵還可能容易造成死鎖

四、開發不方便

有外來鍵時,無論開發還是維護,需要手工維護資料時,都不太方便,要考慮級聯因素

總結一、如是單機且低併發,也不需要效能調優,再或者不能用程式保證資料的一致性,完整性,可以使用外來鍵

二、如果為了高併發,分布式,使系統效能更優,以及更好維護,則一定不能使用外來鍵

為什麼需要外來鍵?

1.如何將京東fuliuqingfeng的使用者資訊及其多個郵寄商品位址儲存到資料庫中?values 51b28fe1 4ebf 41ac a17b d5e276861fd0 fuliuqingfeng 123456 張三 18920120206 河南安陽 insert into user info...

為什麼需要外來鍵

例如 如何將乙個使用者的使用者資訊及其多個郵寄商品位址儲存到資料庫中?資料特點 有較多的冗餘資料,即賬戶和密碼相同其他資訊有差別 方案一 create table user info 建立共享資訊 id char 36 primary key,id資訊為主鍵 user name varchar 30...

為什麼需要外來鍵

生活中例子的引入 如何將京東fuliuqingfeng的使用者資訊及其多個郵寄商品位址儲存到資料庫中?第一種方法是逐條輸入資料 create table user info id char 36 primary key,user name varchar 30 not null,password v...