亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

MYSQL外鍵的作用是什么

發布時間:2021-08-02 17:23:12 來源:億速云 閱讀:175 作者:Leah 欄目:數據庫

MYSQL外鍵的作用是什么,相信很多沒有經驗的人對此束手無策,為此本文總結了問題出現的原因和解決方法,通過這篇文章希望你能解決這個問題。

  MYSQL外鍵是什么?

  定義:外鍵是相對于主鍵說的,是建立表之間聯系的必須的前提。

  例如:

  這里有兩張,user(用戶)表和qx(權限)表,user中gid是用戶權限id,而gid是依賴于qx中的id。那么qx中的id就是user的外鍵。

  也就是當我們給gid創建一個外鍵,這個外鍵就是qx中的id時,gid就必須與qx中id一致,我們可以通過外鍵使兩張表進行關聯。

  那么創建外鍵的作用是什么?

  1.可以使得兩張表關聯,保證數據的一致性和實現一些級聯操作。

  2.保持數據一致性,完整性。

  主要目的是控制存儲在外鍵表中的數據。使兩張表形成關聯,外鍵只能引用外表中的列的值!可以使得兩張表關聯,保證數據的一致性和實現一些級聯操作。

  數據庫設計是否需要外鍵?

  這里有兩個問題:

  1.如何保證數據庫數據的完整性和一致性。

  2.第一條對性能的影響。

  正方觀點

  1.由數據庫自身保證數據一致性,完整性,更可靠,因為程序很難100%保證數據的完整性。

  而用外鍵即使在數據庫服務器當機或者出現其他問題的時候,也能夠最大限度的保證數據的一致性和完整性。

  注意:數據庫和應用是一對多的關系,A應用會維護他那部分數據的完整性,系統一變大時,增加了B應用,A和B兩個應用也許是不同的開發團隊來做的。他們如何協調保證數據的完整性,而且一年以后如果又增加了C應用呢?

  2.有主外鍵的數據庫設計可以增加ER圖的可讀性,這點在數據庫設計時非常重要。

  3.外鍵在一定程度上說明的業務邏輯,會使設計周到具體全面。

  反方觀點

  1.可以用觸發器或應用程序保證數據的完整性

  2.過分強調或者說使用主鍵/外鍵會平添開發難度,導致表過多等問題

  3.不用外鍵時數據管理簡單,操作方便,性能高。

  (導入導出等操作,在insert,update, delete 數據的時候更快)

  注意:在海量的數據庫中想都不要去想外鍵,試想,一個程序每天要insert數百萬條記錄,當存在外鍵約束的時候,每次要去掃描此記錄是否合格,一般還不 止一個字段有外鍵,這樣掃描的數量是成級數的增長!我的一個程序入庫在3個小時做完,如果加上外鍵,需要28個小時!

  總結

  1.在大型系統中(性能要求不高,安全要求高),使用外鍵;在大型系統中(性能要求高,安全自己控制)不用外鍵;小系統隨便,最好用外鍵。

  2.用外鍵要適當,不能過分追求。

  3.用程序控制數據一致性和完整性時,應該寫一層來保證,然后每個應用通過這個層訪問數據庫。

  MySQL允許使用外鍵,但是為了完整性檢驗的目的,在除了InnoDB表類型之外的所有表類型中都忽略了這個功能。

  這可能有些怪異,實際上卻非常正常:對于數據庫的所有外鍵的每次插入、更新和刪除后,進行完整性檢查是一個耗費時間和資源的過程,它可能影響性能,特別是當處理復雜的或者是纏繞的連接樹時。

  因而,用戶可以在表的基礎上,選擇適合于特定需求的最好結合。所以,如果需要更好的性能,并且不需要完整性檢查,可以選擇使用MyISAM表類型,如果想要在MySQL中根據參照完整性來建立表并且希望在此基礎上保持良好的性能,最好選擇表結構為innoDB類型。

看完上述內容,你們掌握MYSQL外鍵的作用是什么的方法了嗎?如果還想學到更多技能或想了解更多相關內容,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

长岛县| 抚顺县| 永顺县| 建湖县| 鸡东县| 磴口县| 司法| 开原市| 昌平区| 都昌县| 桓仁| 黎平县| 九江市| 区。| 佛学| 和政县| 行唐县| 梓潼县| 财经| 平果县| 新郑市| 揭西县| 张北县| 柳州市| 含山县| 扎鲁特旗| 仪征市| 佛学| 佛坪县| 铜川市| 依兰县| 堆龙德庆县| 荥阳市| 曲阜市| 康平县| 霍山县| 霍林郭勒市| 北海市| 驻马店市| 井冈山市| 弋阳县|