如何設定外來鍵?

2021-07-04 18:11:49 字數 1114 閱讀 3295

什麼是外來鍵?

好好體會這句話:如果關係模式r中的某屬性集不是r的

主鍵,而是另乙個關係r1的主鍵則該屬性集是關係模式r的外來鍵,通常在資料庫設計中縮寫為fk。

看下面的例子。其中,公司代號這個屬性集不是第一張表的主鍵,而是第二張表中的主鍵,則公司代號這個屬性集是第一張表的外來鍵。

然後這個公司代號就成為了兩張表的相關聯絡。

外來鍵表示了兩個關係之間的相關聯絡。

作用:保持資料一致性,完整性

目的:主要目的是控制儲存在外鍵表中的資料。 使兩張表形成關聯,外來鍵只能引用外表中的列的值或使用空值。

什麼屬性集才能夠有資格成為外來鍵呢?

首先,必須是關聯字段,兩張表中都必須有的

其次,所有的鍵必須唯一。兩張表中,主鍵只有乙個,外來鍵也必須只有乙個。

再其次,外來鍵關聯的總是唯一的鍵字段。也就是外來鍵只屬於一種屬性。

還要特別注意一點,2個或多個表的外來鍵,資料肯定要一致,如果乙個表裡有,另乙個木有,就不能增加外來鍵。

簡潔來講,意思就是:設定了外來鍵意味著兩張表之間有關聯了,不能隨意對一張表隨意定義內容,因為兩張表產生了關聯,要有都有,要沒有都沒有

該bbs專案設定外來鍵時,刪除和更新時的選項都選擇no action就能夠成功設定外來鍵

但同時,也因為上述原因,設定外來鍵會帶來諸多不便。

比如說,如果刪除一條記錄,兩張或多張關聯的表本來一致的內容被刪成不一致了。就肯定會報錯,如果我們引入刪除或者更新表的操作,在操作的過程中,就很容易出錯。

所以,公司內部的專案中一般不設定外來鍵,而是寫索引。

寫索引有這麼幾個作用:

1. 引入索引可以提公升查詢速度;

2. 可以對不能重複的內容設定唯一索引,防止重複,比如使用者名稱,比如身份證號。

索引要怎麼寫呢?先不管。後續再寫!

知道怎麼寫了:

create index ix_user_id onuser(id)

create index ix_user_usernameon user(username)

create index ix_user_passwordon user(password)

sql如何設定外來鍵

這學期開始學習資料庫,上次的實驗課遇到了設定外來鍵的問題,後面在老師的指引及自己資料的收集下找到了幾種辦法 第一種 第二種alter table work add constraint departmentid fk foreign key departmentid references dep d...

mysql中如何設定外來鍵

概念 表示兩個表之間的相關聯絡,是表與表之間保持資料一致性,完整性,主要目的是控制儲存在外鍵表中的資料,約束,外來鍵只能引用外表中的列的值或使用空值。這兩個表必須滿足三個條件 使用在外鍵關係的域必須與資料型別相似 使用在外鍵關係的域必須為索引型 index 兩個表必須是innodb資料引擎 建立外來...

如何在MySQL中設定外來鍵約束以及外來鍵的作用

1.外來鍵的作用,主要有兩個 乙個是讓資料庫自己通過外來鍵來保證資料的完整性和一致性 乙個就是能夠增加er圖的可讀性 2.外來鍵的配置 1 先建立乙個主表,如下 建立表student,並新增各種約束 create table student id int primary key 主鍵約束 name ...