資料庫外鍵的作用
1. 資料庫中外鍵的概念及作用是什麼
如果公共關鍵字在一個關系中是主關鍵字,那麼這個公共關鍵字被稱為另一個關系的外鍵。由此可見,外鍵表示了兩個關系之間的聯系。以另一個關系的外鍵作主關鍵字的表被稱為主表,具有此外鍵的表被稱為主表的從表。外鍵又稱作外關鍵字。
外鍵的作用就是可以讓表B是來自表A中,也就是保證了數據的規范性;如果要刪除A表中的某個數據,那麼首先要刪除B表中同樣的數據,這保證了數據的完整。
2. 外鍵的作用
資料庫中外鍵的作用。多多了解這方面的內容,對建立資料庫影響還是相當大的,我們應該好好的學習他了解他才能更好的掌握的。
外鍵 (FK) 是用於建立和加強兩個表數據之間的鏈接的一列或多列。通過將保存表中主鍵值的一列或多列添加到另一個表中,可創建兩個表之間的鏈接。這個列就成為第二個表的外鍵。
FOREIGN KEY 約束的主要目的是控制存儲在外鍵表中的數據,但它還可以控制對主鍵表中數據的修改。例如,如果在 publishers 表中刪除一個出版商,而這個出版商的 ID 在 titles 表中記錄書的信息時使用了,則這兩個表之間關聯的完整性將被破壞,titles 表中該出版商的書籍因為與 publishers 表中的數據沒有鏈接而變得孤立了。FOREIGN KEY 約束防止這種情況的發生。如果主鍵表中數據的更改使之與外鍵表中數據的鏈接失效,則這種更改是不能實現的,從而確保了引用完整性。如果試圖刪除主鍵表中的行或更改主鍵值,而該主鍵值與另一個表的 FOREIGN KEY 約束值相關,則該操作不可實現。若要成功更改或刪除 FOREIGN KEY 約束的行,可以先在外鍵表中刪除外鍵數據或更改外鍵數據,然後將外鍵鏈接到不同的主鍵數據上去。
外鍵只能引用外表中的列的值!
外鍵的作用:
保持數據一致性,完整性,主要目的是控制存儲在外鍵表中的數據。 使兩張表形成關聯,就是當你對一個表的數據進行操作,和他有關聯的一個或更多表的數據能夠同時發生改變。
例如一:
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中存在的值,有外鍵的時候,資料庫會自動幫你檢查A的b是否在B的b中存在。
1、外建表達的是參照完整性:這是數據固有的,與程序無關。因此,應該交給DBMS來做。
2、使用外建,簡單直觀,可以直接在數據模型中體現,無論是設計、維護等回有很大的好處,特別是對於分析現有的資料庫的好處時非常明顯的--前不久我分析了一個企業現有的資料庫,裡面的參照完整性約束有的是外鍵描述,有的是用觸發器實現,感覺很明顯。當然,文檔里可能有,但是也可能不全,但是外鍵就非常明顯和直觀。
3、既然我們可以用觸發器或程序完成的這個工作(指參照完整性約束),DBMS已經提供了手段,為什麼我們要自己去做?而且我們做的應該說沒有RDBMS做得好。實際上,早期的RDBMS並沒有外鍵,現在都有了,我認為資料庫廠商增加這個功能是有道理的。從這個角度來說,外鍵更方便。
4、關於方便,根據我帶項目的情況來看,程序員確實有反映,主要是在調試時輸入數據麻煩:如果數據可以違反參照完整性,那麼就是說參照完整性本身就不對名譽業務沖突,此時也不應該用觸發期貨程序實現;否則,說明數據是錯誤的,根本就不應該進入資料庫!而且,這也應該是測試系統的一個內容:阻止非法數據。實際上,前台程序應該對這種提交失敗做出處理。數據是企業的而非程序的,儲程序要盡量與數據分離,反之亦然。
3. 資料庫中主鍵和外鍵是幹嘛用的
主鍵是表格里的(一個或多個)欄位,只用來定義表格里的行;主鍵里的值總是唯一的。外鍵是一個用來建立兩個表格之間關系的約束。
建立外鍵後,在插入數據時候會檢測數據在主鍵表中是否存在,如果不存在則無法插入,通過這可以提高維護資料庫的完整性和一致性
簡單點兒說
主鍵是對表的約束,保證數據的唯一性!
外鍵是建立表於表之間的聯系,方便程序的編寫!
4. 很菜的資料庫問題,主鍵的值允許重復嗎外鍵什麼作用
主鍵的值不能重復。
外鍵主要目的是控制存儲在外鍵表中的數據。 使兩張表形成關聯,外鍵只能引用外表中的列的值或使用空值。
主鍵是用來唯一表示一條數據的值,不能重復的。比如,一條記錄包括身份正號,姓名,年齡。身份證號是唯一能確定你這個人的,其他都可能有重復,所以,身份證號是主鍵。
外鍵用於與另一張表的關聯。是能確定另一張表記錄的欄位,用於保持數據的一致性。比如,A表中的一個欄位,是B表的主鍵,那他就可以是A表的外鍵。
(4)資料庫外鍵的作用擴展閱讀:
資料庫中的表必須符合規范,才能杜絕數據冗餘、插入異常、刪除異常等現象。規范的過程是分解表的過程。經過分解,伺一事物的代表屬性出現在不同的表中。顯然,它們應該保持一致。
例如,某學生的代表數據是學號012,在學生表裡是012,在成績表裡也應該是012。這種一致性由外鍵實現。外鍵的功能是:它的值一定是另一個表的主鍵值。學號在學生表裡是主鍵,在成績表裡是外鍵。成績表裡的學號一定要是學生表裡的學號。
於是,學生表裡的學號和成績表裡的學號就一致了。可以直觀地理解,外鍵的功能是實現同一事物在不同表中的標志一致性。
5. 資料庫中的外鍵有用嗎
當然有用了.
有兩個表.
表1:(存放的是用戶資料)
包含3列:id,姓名,性別
表2:(存放的是的成績)
包含3列:userid,課程,成績.
外鍵關系:
表2.userid==表1.id
當你在表2中插入成績時,資料庫會自動檢查用戶是否在表1中存在.
如果外鍵有級聯刪除時刪除表1的用戶時,會同時自動刪除表2的相關數據.
6. 主鍵和外鍵的作用
主鍵和外鍵的作用:
1、保證實體的完整性,加快資料庫操作速度,在表中添加記錄時,access會自動檢查新記錄主鍵值,不允許該值與主鍵值重復。access會自動按主鍵值排序好的顯示出來。如果沒有約束,則是按照用戶輸入信息的順序顯示出來。主鍵不接受空值,約束確保唯一數據。
2、外鍵保證的是數據的完整性。外鍵:一組數據的主鍵是另一組數據的的元素;主鍵約束了外鍵所在表中不能存在主鍵類之外的值;外鍵用於與另一張表的關聯。是能確定另一張表記錄的欄位,用於保持數據的一致性。比如,A表中的一個欄位,是B表的主鍵,就可以是A表的外鍵。
(6)資料庫外鍵的作用擴展閱讀:
主鍵和外鍵的注意事項:
1、主鍵默認非空,默認唯一性約束,只有主鍵才能設置自動增長,自動增長一定是主鍵,主鍵不一定自動增長;
設置主鍵的方式:在定義列時設置:ID INT PRIMARY KEY;在列定義完之後設置:primary KEY(id)、
2、只有INNODB的資料庫引擎支持外鍵,修改my.ini文件設置default-storage-engine=INNODB 外鍵必須與參照列的數據類型必須相同(數值型要求長度和無符號都相同,字元串要求類型相同,長度可以不同)。
設置外鍵的語法:CONSTRAINT 外鍵名 FOREIGN KEY (外鍵欄位)REFERENCES 參照表 (參照欄位) ON DELETE SET NULL ON UPDATE CASCADE 設置參照完整性。
3、外鍵約束的參照操作:
RESTRICT拒絕參照表刪除或更新參照欄位;
RESTRICT和NO ACTION相同,但這個指令只在mysql生效;
CASCADE刪除或更新參照表的參照欄位時,外鍵表的記錄同步刪除更新;
SET NULL 刪除或更新參照表的參照欄位時,外鍵表的外鍵設為NULL。