1:什么是主鍵
在一張表中,用來唯一標識一條記錄的字段集,叫做主關鍵字或者主關鍵碼,簡稱主鍵(或主碼),這里說"字段集"是因為主鍵可能用一個字段或者多個字段來表示。舉例來看:
學生表(學號, 姓名, 性別,專業編號),這里學號是主鍵,一個學號id就可以唯一標識一個學生的信息。另一個表:學生選課表(學號, 課程號, 成績),這里(學號, 課程號)是主鍵,因為一個學號(即一個學生)可以選擇多門課程,一個課程號(即一個課程)可以被多個學生選擇,無法用一個字段來標識一條學生選課的信息記錄,而使用(學號, 課程號)這兩個字段作為關鍵字就可以唯一標識學生的選課信息。
2:什么是外鍵?
一張表的非主屬性是另一個表的主屬性就是這個表的外鍵。這里有兩個分別為: 學生表(學號, 姓名, 性別,專業編號),專業信息表(專業編號,專業名稱,專業備注信息)。學生表中主鍵是學號,專業信息表中主鍵是專業編號。學生表中的非主屬性專業編號恰好是專業信息表中的主鍵。我們就稱這個專業編號是學生表的外鍵。像這樣,一個表的非主屬性是另一個表的主屬性,該非主屬性就是外鍵。
概念定義:什么是父表和子表?
有兩張表A表和B表,表A中的一個字段id是外鍵,表B中的一個字段id是主鍵,那么稱B為父表,A為子表。就是說一個表中外鍵字段(相當於這里的A表)是另一個表中(相當於這里的B表)的主鍵。 還是上面的兩個表來舉例理解:學生表(學號, 姓名, 性別,專業編號),專業信息表(專業編號,專業名稱,專業備注信息)。這里學生表是子表,專業信息表是父表。
設置表的外鍵的作用在於建立與父表的聯系,比如在專業信息表中某個專業編號的id為'1001',刪除這個id后,則學生表中的專業編號id為'1001'的記錄也隨着刪除,這樣做的目的在於保證表的完整性。
數據庫的三種約束
2.參照完整性約束,即外鍵的約束,某一外鍵的值必須在它引用的主鍵字段中存在。如,學生表中專業編號屬性的值,必須都存於專業信息表中的專業編號屬性中。想一想也就明白了,一個學生(大學生)怎么可能屬於一個不存在的專業。
3.用戶自定義完整性約束,指的是一些用戶自己設定的約束,例如字段是否可以為空,字段值的取值范圍(如:人的性別只能取男、女)。
