新聞中心
在數(shù)據(jù)庫設(shè)計中,外鍵是一項非常重要的概念,它可以幫助保證數(shù)據(jù)庫的完整性和可靠性。雖然外鍵并不是必需的,但是在大多數(shù)情況下使用外鍵可以提高數(shù)據(jù)庫的性能和可維護性。本篇文章將詳細講解外鍵在數(shù)據(jù)庫中的目的和作用。

成都創(chuàng)新互聯(lián)公司是一家專業(yè)從事做網(wǎng)站、網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司。作為專業(yè)的建站公司,成都創(chuàng)新互聯(lián)公司依托的技術(shù)實力、以及多年的網(wǎng)站運營經(jīng)驗,為您提供專業(yè)的成都網(wǎng)站建設(shè)、成都營銷網(wǎng)站建設(shè)及網(wǎng)站設(shè)計開發(fā)服務(wù)!
一、外鍵的定義
外鍵(Foreign Key)指的是在一個表中,一個或多個字段的值是另一個表中某個字段的值,用于實現(xiàn)表之間的聯(lián)系。例如,在數(shù)據(jù)庫中有員工表和部門表,員工表中有一個字段是所屬部門的編號,那么這個字段就可以作為員工表中的外鍵字段,在部門表中的部門編號字段作為主鍵,從而將兩個表關(guān)聯(lián)起來。
二、外鍵的作用
1. 保證數(shù)據(jù)的完整性
在使用外鍵時,可以通過設(shè)置主鍵和外鍵的關(guān)系來保證數(shù)據(jù)的完整性。當外鍵引用的主鍵值在目標表中不存在時,可通過外鍵約束來防止此操作,實現(xiàn)數(shù)據(jù)的完整性約束。
例如,在設(shè)計數(shù)據(jù)庫時,假設(shè)有一個表是訂單表,里面包含了商品的 ID,由于商品 ID 是與商品名稱一一對應(yīng)的,因此可以將商品 ID 設(shè)置為外鍵,同時將商品表中商品 ID 設(shè)置為主鍵,這樣就能夠避免在訂單表中添加不存在的商品 ID 而導(dǎo)致數(shù)據(jù)的不完整。
2. 增加數(shù)據(jù)查詢效率
在使用外鍵時,可以通過索引對數(shù)據(jù)進行優(yōu)化。對外鍵屬性建立索引,可以加快表之間查詢的效率,提高數(shù)據(jù)查詢的速度。在查詢時,如果使用了外鍵屬性,數(shù)據(jù)庫管理系統(tǒng)就會使用主鍵的索引進行查詢,從而提高了查詢的效率。
例如,在設(shè)計數(shù)據(jù)庫時,還是以訂單表和商品表舉例,如果在訂單表中使用了外鍵,那么在進行商品信息查詢時,就不必掃描整個訂單表,而是可以根據(jù)外鍵關(guān)系直接從商品表中進行查詢,這樣可以節(jié)省系統(tǒng)開銷,提高數(shù)據(jù)查詢效率。
3. 更好的可維護性
在使用外鍵時,可以實現(xiàn)數(shù)據(jù)的自動更新和刪除操作,因此可以方便地維護數(shù)據(jù)的完整性。當主表(或主鍵表)的數(shù)據(jù)發(fā)生變化時,外鍵約束可以自動更新或刪除相應(yīng)的外鍵數(shù)據(jù),從而避免了數(shù)據(jù)的不一致性。
例如,在上述的例子中,如果更改了商品表中某個商品的名稱,那么與其關(guān)聯(lián)的訂單表中的商品名稱也會隨之更新,從而達到了數(shù)據(jù)的一致性。
三、外鍵的實現(xiàn)
在實現(xiàn)外鍵時,需要對建立外鍵的屬性進行設(shè)置。在數(shù)據(jù)庫中,主鍵關(guān)系和外鍵關(guān)系至關(guān)重要。建立外鍵關(guān)系之前,必須先建立主鍵關(guān)系。在建立好主鍵關(guān)系后,在表的基礎(chǔ)上設(shè)置外鍵屬性,將外鍵關(guān)系與主鍵關(guān)系相互對應(yīng)即可。
四、外鍵的使用注意事項
雖然外鍵的使用可以帶來諸多優(yōu)點,但是在使用外鍵時,也需要注意以下幾點:
1. 外鍵關(guān)系的建立需要考慮到數(shù)據(jù)庫的性能,在建立關(guān)系時應(yīng)該避免嵌套過多的關(guān)系。
2. 當刪除一個表中的數(shù)據(jù)時,必須先刪除該表中的所有外鍵引用,否則會因為外鍵限制而無法刪除。
3. 外鍵關(guān)系的使用需要謹慎,在進行數(shù)據(jù)操作時應(yīng)該避免修改或刪除大量數(shù)據(jù),否則會降低數(shù)據(jù)庫的性能。
外鍵在數(shù)據(jù)庫中是一項非常重要的功能,它能夠保證數(shù)據(jù)庫的完整性和可靠性,提高數(shù)據(jù)查詢效率,同時也給數(shù)據(jù)庫的維護帶來諸多便利。因此,在數(shù)據(jù)庫設(shè)計中,應(yīng)該充分考慮外鍵的使用。
相關(guān)問題拓展閱讀:
- 外鍵是什么
- VB的數(shù)據(jù)庫中,什么叫外鍵
- 外鍵的作用
外鍵是什么
科洞大普中納旦豎國·科學(xué)百科 外鍵遲冊
外鍵是該表是另一個表之間聯(lián)接的字段(外鍵必須為另一個表中的主鍵)
外鍵的用途是確保數(shù)據(jù)的完整性。它通常包括以下衡渣幾種:
實體完整性,確保每個實體是唯一的(通過主鍵來實施)
域完整性,確保屬性值只從一套特定可選的里選擇
關(guān)聯(lián)完整性,確保每個外鍵或是NULL(如果允許的話)或含有與相關(guān)主鍵值相配的值
如果你悔爛在沒有定義數(shù)據(jù)庫的實際外鍵的情況,試圖強制執(zhí)行關(guān)聯(lián)完整性,那你就會遇到數(shù)據(jù)庫“斷列鏈接”或“孤單記錄”的風(fēng)險。換句話說,數(shù)據(jù)的完整性會被破壞,你的數(shù)據(jù)庫會含有不良數(shù)據(jù),你的用戶會很生氣(或更糟)。
你從來不能肯定你的前臺程序是更改數(shù)據(jù)庫數(shù)據(jù)的唯一手段。那是太危險了。此外,你在已經(jīng)建好的數(shù)據(jù)庫上花費不必要及大量的時間和精力來生成邏輯。你在沒有合理理由的情況下再發(fā)明輪子。
從來不存在“太多的”外鍵。 或者是業(yè)務(wù)需求需要的, 或者不需要。如果需要(例如,確保每個定單歸屬于一個已知的客戶),那你必須實施它們。咐前悄性能不是問題。不進行外鍵檢查,你的查尋可能會快幾微微秒,但如果數(shù)據(jù)庫包含不良數(shù)據(jù),你的用戶會容忍這樣的情況持續(xù)多久呢?
比如在員工信息表中有部門的編號,部門的信息在另外一個表中,在部門信息表中這個部門編號必須是存在的或者為空,而不能是一個不存在的部門編號。
這個就可以使用外鍵來限制員工信息表的部門編號的外鍵為部門信息表的部門編號,這樣Oralce就可以自動完成員工信息表中的部門編號必須存在了。
外鍵的用途是確保數(shù)據(jù)的完整性。它通常包括以下幾種:
實體完整性,確保每個實體是唯一的(通過主鍵來實施)
域完整性,確保屬燃滲性值只從一套特定可選的里選擇
關(guān)聯(lián)完整臘隱性,確保每個外鍵或是NULL(如果允許的話)或含有與相關(guān)主鍵值相配的值
如果你在沒有定義數(shù)據(jù)庫的實際外鍵的情況,試圖強制執(zhí)行關(guān)聯(lián)完整性,那你就會遇到數(shù)據(jù)庫“斷列鏈接”或“孤單記錄”輪段廳的風(fēng)險。換句話說,數(shù)據(jù)的完整性會被破壞,你的數(shù)據(jù)庫會含有不良數(shù)據(jù),你的用戶會很生氣(或更糟)。
你從來不能肯定你的前臺程序是更改數(shù)據(jù)庫數(shù)據(jù)的唯一手段。那是太危險了。此外,你在已經(jīng)建好的數(shù)據(jù)庫上花費不必要及大量的時間和精力來生成邏輯。你在沒有合理理由的情況下再發(fā)明輪子。
從來不存在“太多的”外鍵。 或者是業(yè)務(wù)需求需要的, 或者不需要。如果需要(例如,確保每個定單歸屬于一個已知的客戶),那你必須實施它們。性能不是問題。不進行外鍵檢查,你的查尋可能會快幾微微秒,但如果數(shù)據(jù)庫包含不良數(shù)據(jù),你的用戶會容忍這樣的情況持續(xù)多久呢?
外鍵(Foreign Key)換而言之,如果關(guān)系模式R中的某屬性集不是R的主鍵,而是另一個關(guān)系R1的主鍵則逗粗燃該屬性集是關(guān)系模式R的外鍵,通常在數(shù)據(jù)庫設(shè)計中縮寫為FK。
使用原則
1、 為關(guān)聯(lián)字段創(chuàng)建外凳穗鍵。
2、 所有的鍵都必須唯一。山虛
3、避免使用復(fù)合鍵。
4、外鍵總是關(guān)聯(lián)唯一的鍵字段。
使用方法
主鍵表和外建表:
使用設(shè)計界面創(chuàng)建外鍵時,出現(xiàn)主鍵表和外建表問題,上述使個人理解有誤:
CREATE TABLE TABLE1
(
INT IDENTITY(1,1) PRIMARY KEY
)
GO
CREATE TABLE TABLE2
(
INT NOT NULL,
FOREIGN KEY () REFERENCES ()
)
GO
TABLE2 中引用了TABLE1,在此TABLE1為主鍵表,而TABLE2 為外鍵表。
VB的數(shù)據(jù)庫中,什么叫外鍵
鍵:唯一標識表中的所有行的一個列或一組列。
主鍵不允許空值。不能存在具有相同的主鍵值的兩個行,因此主鍵值敏旅總是唯一標識單個行。
表中可以有不止一個鍵唯一標識行,每個鍵都稱作候選鍵。只有一個候選鍵可以選作表的主鍵,所有其它候選鍵稱作備用鍵。盡管表不要求具有主鍵,但定義主鍵是很好的做法。
外鍵(FK):
是用于建立和加強兩個表數(shù)據(jù)之間的鏈接的一列或多列。通過祥拿知將保存表中主鍵值的一列或多列添加到另一個表中,可創(chuàng)建兩個表之間的鏈接。這個列就成為第二個表的外鍵。
例如:成績表中的學(xué)號不能做成績表的主鍵(因為一謹消個學(xué)生可以有多行成績數(shù)據(jù)),但每行的學(xué)號和學(xué)生表中的學(xué)號相對應(yīng),并且學(xué)生表中的學(xué)號是學(xué)生表的主鍵,則稱成績表中的學(xué)號是學(xué)生表的外鍵
。(典型的一對多關(guān)系)
外鍵的作用
數(shù)據(jù)庫中
外鍵
的作用。多多了解這方面的內(nèi)容,對建立數(shù)據(jù)庫影響還是相當大的,我們應(yīng)該好好的學(xué)習(xí)他了解他才能更好的掌握的。
外鍵 (FK) 是用于建立和加強兩個表數(shù)據(jù)之間的鏈接的一列或多列。通過將保存表中
主鍵
值的一列或多列添加到另一個表中,可創(chuàng)建兩個表之間的鏈接。這個列就成為第二個表的外鍵。
FOREIGN KEY 約束的主要目的是控制存儲在外鍵表中的數(shù)據(jù),但它還可以控制對主鍵表中數(shù)據(jù)的修改。例如,如果在 publishers 表中刪除一個出版商,而這個出版商的 ID 在 titles 表中記錄書的信息時使用了,則這兩個表之間關(guān)聯(lián)的完整性將被破壞,titles 表中該出版商的書籍因為與 publishers 表中的數(shù)據(jù)沒有鏈接而變得孤立了。FOREIGN KEY 約束防止這種情況的發(fā)生。如果主鍵表中數(shù)據(jù)的更改使之與外鍵表中數(shù)據(jù)的鏈接失效,則這種更改是不能實現(xiàn)的,從而確保了引用完整性。如果試圖刪除主鍵表中的行或更改主鍵值,而該主鍵值與另一個表的 FOREIGN KEY 約束值相關(guān),則該操作不可實現(xiàn)。若要成功更改或刪除 FOREIGN KEY 約束的行,可以先在外鍵表中刪除外鍵數(shù)據(jù)或更改外鍵數(shù)據(jù),然后將外鍵鏈接到不同的主鍵數(shù)據(jù)上去。
外鍵只能引用外表中的列的值!
外鍵的作用:
保持數(shù)據(jù)一致性,完整性,主要目的是控制存儲在外鍵表中的數(shù)據(jù)。 使兩張表形成關(guān)聯(lián),就是當你對一個表的數(shù)據(jù)進行操作,和他有關(guān)聯(lián)的一個或更多表的數(shù)據(jù)能夠同時發(fā)生改變。
例如一:
a b 兩個表
a表中存有客戶號,客戶名稱
b表中存有每個客戶的訂單
有了外鍵后
你只能在確信b 表中沒有客戶x的訂單后,才可以在a表中刪除客戶x。
例如二:
例如有兩個表
A(a,b) :a為主鍵,b為外鍵(來自于B.b)
B(b,c,d) :b為主鍵
如果我把字段b的外鍵屬性去掉,對編程沒什么影響。
如上面,A中的b要么為空,要么是在B的b中存在的值,有外鍵的時候,數(shù)據(jù)庫會自動幫你檢查A的b是否在B的b中存在。
1、外建表達的是參照完整性:這是數(shù)據(jù)固有的,與程序無關(guān)。因此,應(yīng)該交給DBMS來做。
2、使用外建,簡單直觀,可以直接在
數(shù)據(jù)模型
中體現(xiàn),無論是設(shè)計、維護等回有很大的好處,特別是對于分析現(xiàn)有的團唯數(shù)據(jù)庫的好處時非常明顯的–前不久我分析了一個企業(yè)現(xiàn)有的數(shù)據(jù)庫,里面的參照完整性約束有的是外鍵描述,有的是用
觸發(fā)器
實現(xiàn),感覺很明兄或毀顯。當然,文檔里可能有,但是也可能不全,但是外鍵就非常明顯和直觀。
3、既然我們可以用觸發(fā)器或程序完成的這個工作(指參照完整性約束),DBMS已經(jīng)提供了手段,為什么我們要自己去做?而且我們做的應(yīng)該說沒有RDBMS做得好。實際上,早期的RDBMS并沒有外鍵,現(xiàn)在都有了,我認為數(shù)據(jù)庫廠商增加這個功能是有道理的。從這個角度來說,外鍵更方便。
4、關(guān)于方便,根據(jù)我?guī)ы椖康那闆r來看,程序員確實有反映,主要是在調(diào)試時
輸入數(shù)據(jù)
麻煩:如果數(shù)據(jù)可以違反參照完整性,那么就是說參照完整性本身就不對名譽業(yè)務(wù)沖突,此時也不應(yīng)該用觸發(fā)期貨程序?qū)崿F(xiàn);否則,說明數(shù)據(jù)是錯誤的,根本就不應(yīng)該進入數(shù)據(jù)庫!而且,這也應(yīng)該羨備是測試系統(tǒng)的一個內(nèi)容:阻止非法數(shù)據(jù)。實際上,前臺程序應(yīng)該對這種提交失敗做出處理。數(shù)據(jù)是企業(yè)的而非程序的,儲程序要盡量與數(shù)據(jù)分離,反之亦然。
數(shù)據(jù)庫 鍵fk的介紹就聊到這里吧,感謝你花時間閱讀本站內(nèi)容,更多關(guān)于數(shù)據(jù)庫 鍵fk,數(shù)據(jù)庫中使用外鍵(fk)的目的及作用,外鍵是什么,VB的數(shù)據(jù)庫中,什么叫外鍵,外鍵的作用的信息別忘了在本站進行查找喔。
成都創(chuàng)新互聯(lián)科技有限公司,是一家專注于互聯(lián)網(wǎng)、IDC服務(wù)、應(yīng)用軟件開發(fā)、網(wǎng)站建設(shè)推廣的公司,為客戶提供互聯(lián)網(wǎng)基礎(chǔ)服務(wù)!
創(chuàng)新互聯(lián)(www.cdcxhl.com)提供簡單好用,價格厚道的香港/美國云服務(wù)器和獨立服務(wù)器。創(chuàng)新互聯(lián)——四川成都IDC機房服務(wù)器托管/機柜租用。為您精選優(yōu)質(zhì)idc數(shù)據(jù)中心機房租用、服務(wù)器托管、機柜租賃、大帶寬租用,高電服務(wù)器托管,算力服務(wù)器租用,可選線路電信、移動、聯(lián)通機房等。
分享題目:數(shù)據(jù)庫中使用外鍵(fk)的目的及作用(數(shù)據(jù)庫鍵fk)
本文來源:http://m.5511xx.com/article/copdphj.html


咨詢
建站咨詢
