基礎1 外鍵

(1)外鍵定義作用
外鍵是用于在兩個表中的數據之間建立和加強鏈接的一列或多列的組合,可控制可在外鍵表中存儲的數據。

外鍵用于與另一張表的關聯。是能確定另一張表記錄的字段,用于保持數據的一致性。比如,A表中的一個字段,是B表的主鍵,那他就可以是A表的外鍵
(2)外鍵約束

CONSTRAINT "fkeyid" FOREIGN KEY ("fid") REFERENCES "public"."person" ("id") ON DELETE NO ACTION ON UPDATE NO ACTION,

ON DELETE NO ACTION ON UPDATE NO ACTION 是數據庫外鍵定義的一個可選項,用來設置當主鍵表中的被參考列的數據發生變化時,外鍵表中響應字段的變換規則的。

update則是主鍵表中被參考字段的值更新,delete是指在主鍵表中刪除一條記錄:on update 和 on delete 。
后面可以跟的詞語有四個no action , set null , set default ,cascade。

  • no action 表示 不做任何操作。
  • set null 表示在外鍵表中將相應字段設置為null。
  • set default 表示設置為默認值。
  • cascade 表示級聯操作,就是說,如果主鍵表中被參考字段更新,外鍵表中也更新,主鍵表中的記錄被刪除,外鍵表中改行也相應刪除。

注:理論上理解好,實際應用過程中很少建立實際的外鍵,只是邏輯上的外鍵。
1:在大數量的情況下,使用外鍵約束會導致很差的性能。互聯網很少用外鍵約束。
2:大數據量時進行表的水平切分,像外鍵約束、觸發器、存儲過程這些都是禁區
3:數據完整性是業務的需要,因此得由業務層的應用程序來控制
4:外鍵會導致表結構非常混亂,幾乎是動都不能去動,一層套一層的外鍵約束,在表很多的情況下很可能會導致循環約束

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 系統用戶: 1.sys system(sys權限最高) 2.sysman(操作企業管理器) 密碼是安裝的時候輸入的...
    3hours閱讀 1,602評論 0 0
  • 1、MySQL啟動和關閉(安裝及配置請參照百度經驗,這里不再記錄。MySQL默認端口號:3306;默認數據類型格式...
    強壯de西蘭花閱讀 678評論 0 1
  • MySQL5.6從零開始學 第一章 初始mysql 1.1數據庫基礎 數據庫是由一批數據構成的有序的集合,這些數據...
    星期四晚八點閱讀 1,184評論 0 4
  • 又是一年高考時。 去年的這一天,我是坐在考場里奮戰的高三學子,而今年的這一天,我有幸成為了一名志愿者,守護在考場之...
    喝茶的小孩閱讀 185評論 0 0