資料庫的主鍵和外來鍵

2021-09-24 22:45:46 字數 1118 閱讀 6933

資料庫主鍵是指表中乙個列或列的組合,其值能唯一地標識表中的每一行。這樣的一列或多列稱為表的主鍵,通過它可強制表的實體完整性。乙個表只能有乙個 primary key 約束,而且 primary key 約束中的列不能接受空值。

主鍵具有的特點:唯一性、非空性。

思考:主鍵帶來了什麼樣的優點和缺點?

外來鍵也叫foreign key,是用於將兩個表鏈結在一起的鍵。

foreign key是乙個表中的乙個字段(或字段集合),它引用另乙個表中的primary key。

包含外來鍵的表稱為子表,包含候選鍵的表稱為引用表或父表。

請看以下兩個表:

person表

personid

lastname

firstname

age1

hansen

ola30

2svendson

tove233

pettersen

kari

20orders表

orderid

ordernumber

personid

17789532

4467833

2245624

24562

1orders表中的personid列指向persons表中的personid列。

persons表中的personid列是persons表中的primary key。

orders表中的personid列是orders表中的foreign key。

外來鍵帶來的好處主要是,保證資料的完整性和一致性,主要目的是控制儲存在外鍵表中的資料。同時支援關聯查詢。foreign key約束用於防止會破壞表之間鏈結的操作

關於外來鍵的使用存在一些爭議,因為它在確保兩個表之間的關係的時候又帶來很多限制,很多任務程師認為應該在**邏輯裡控制兩個表的關係,而不在資料庫表之間定義這樣的關係。同時,外來鍵對資料的插入刪除等都會帶來影響,因為表與表之間存在關聯,因此各種操作都會變慢,因此在定義外來鍵之前應該盡量考慮好資料的量,以及資料的讀寫頻率等等。

個人從目前的實際經驗出發也不是特別喜歡太多的外來鍵關係存在。盡量子**曾通過邏輯控制資料之間的關係可能確實是更好的做法。在使用的時候應該結合實際情況進行抉擇。

資料庫 主鍵 外來鍵

1 什麼是主鍵 在一張表中,用來唯一標識一條記錄的字段集,叫做主關鍵字或者主關鍵碼,簡稱主鍵 或主碼 這裡說 欄位集 是因為主鍵可能用乙個字段或者多個欄位來表示。舉例來看 學生表 學號,姓名,性別,專業編號 這裡學號是主鍵,乙個學號id就可以唯一標識乙個學生的資訊。另乙個表 學生選課表 學號,課程號...

資料庫外來鍵主鍵

如果乙個欄位被設定為主鍵,那他一定是唯一的,並且是非空的。如果設定為整型,那麼可以新增為自動遞增的功能 外來鍵,應用於主從表。可以保證當前新增的字段在一定範圍內選擇。比如我有兩張表,乙個表是班級表,乙個表是學生表,我需要知道學生在哪乙個班級以及他的位置,我當然可以在班級表中寫好幾個列,但是顯得臃腫,...

關於資料庫主鍵和外來鍵

一 什麼是主鍵 外來鍵 關係型資料庫中的一條記錄中有若干個屬性,若其中某乙個屬性組 注意是組 能唯一標識一條記錄 該屬性組就可以成為乙個主鍵 比如學生表 學號,姓名,性別,班級 其中每個學生的學號是唯一的,學號就是乙個主鍵 課程表 課程編號 課程名,學分 其中課程編號是唯一的,課程編號就是乙個主鍵 ...