資料庫是否要設定主外來鍵

2021-06-08 09:39:27 字數 468 閱讀 1418

在設計資料庫時到底要不要設計主外來鍵?

大多數時,否定主外來鍵的考慮角度一般是效率問題,但是在考慮到效率的同時是否考慮到了資料一致性呢?在保證資料一致性的前提條件下,才要去考慮效率問題(資料存的都不準確,就先不要考慮效率的問題了,當然有時候為了提高效率會人為增加一些冗餘資料),也即在考慮效率的同時要考慮到如何實現資料一致性,拋開用何種方式保持資料一致性來單獨談論效率是沒有意義的。

主外來鍵只是一種保持資料一致性的手段之一,如果有別的方式來保持資料一致性(業務邏輯保持資料一致性),那麼資料庫不設定主外來鍵也是可以的。

譬如一種型別的資料庫不支援主外來鍵,那麼只能通過別的方式保持資料一致性,但是如果是乙個支援主外來鍵的資料庫,那麼通過在資料庫中建立主外來鍵來保證資料的一致性,絕大多數情況下是可以提高效率的(個人感覺使用hibernate的關聯對映確實很方便,當然也會有很多問題,總之一切取決於你的專案,不是說有主外來鍵就一定好,也不是說什麼時候都一定要用主外來鍵)。

參考文章:

資料庫的主外來鍵關係

資料庫中有三種主外來鍵關係圖 1 一對一關係 2 一對多關係 兩種 總圖 注意 在資料庫中如果某列是 fk,那麼這列所在的表就意味著多。另外的表就是一。如下圖 四張表的結構展示了上面所有的三種關係圖 建立的指令碼 oracle create table pkfk b pkb varchar2 10 ...

Oracle資料庫新增刪除主外來鍵

一 新增主鍵 1.表建立的同時,新增主鍵約束 語法 create table 表名 列名1 資料型別及長度 constraint 主鍵名稱 一般主鍵名稱為 pk 開頭 primary key,列名2 資料型別及長度 not null,not null 約束該列不為空,不寫表示可以為空 列名3 資料型...

資料庫設計時是否要加入外來鍵

最近做專案的時候在討論表與表之間的關係是否需要建立外來鍵約束,建立外來鍵的好處 1 由資料庫保證資料完整性,比程式保證完整性更可靠,多應用時 如有應用a,b,c他們之間的實體存在關聯關係 由程式來保證資料完整性變得困難 2 外來鍵約束使得資料庫的er圖可讀性變強,有助於業務邏輯設計 不建立外來鍵的好...