概念
主關鍵字(主鍵,primary key)是被挑選出來,作表的行的唯一標識的
候選關鍵字。一個表只有一個主關鍵字。主關鍵字又可以稱為主鍵。 主鍵可以由一個欄位,也可以由多個欄位組成,分別稱為單欄位主鍵或多欄位主鍵。又稱主碼。並且它可以唯一確定表中的一行數據,或者可以唯一確定一個實體。
碼的定義
設K是
關係模式R(U,F)中的屬性或屬性組,K’是K的任一
真子集。若K→U,而不存在K’→U,則K為R的
候選碼(Candidate Key)
Ø 若候選碼多於一個,則選其中的一個為主碼(Primary Key);
Ø 包含在任一候選碼中的屬性,叫做
主屬性(Primary Attribute);
Ø 不包含在任何碼中的屬性稱為
非主屬性(Nonprime Attribute)或
非碼屬性(Nonkey Attribute)
Ø 關係模式中,最簡單的情況是單個屬性是碼,稱為單碼(Single Key);最極端的情況是整個屬性組是碼,稱為
全碼(All-Key)。
全碼的例子
外碼:設有兩個關係R和S,X是R的屬性或屬性組,並且X不是R的碼,但X是S的碼(或與S的碼意義相同),則稱X是R的
外部碼(Foreign Key),簡稱外碼或
外鍵。
如:職工(職工號,姓名,性別,職稱,部門號)
部門(部門號,部門名,電話,負責人)
其中職工關係中的“部門號”就是職工關係的一個外碼。
在此需要注意,在定義中說X不是R的碼,並不是說X不是R的
主屬性,X不是碼,但可以是碼的組成屬性,或者是任一
候選碼中的一個主屬性。
作用
(1)保證實體的完整性;
(2)加快資料庫的操作速度;
(3)在表中添加
新記錄時,ACCESS會自動檢查新記錄的主鍵值,不允許該值與其他記錄的主鍵值重複;
(4) ACCESS自動按主鍵值的順序顯示錶中的記錄。如果沒有定義主鍵,則按輸入記錄的順序顯示錶中的記錄。
遵循原則
建立主鍵應該遵循的原則
1. 主鍵應當是對用戶沒有意義的。如果用戶看到了一個表示
多對多關係的
連線表中的數據,並抱怨它沒有什麼用處,那就證明它的主鍵設計地很好。
2. 永遠也不要更新主鍵。實際上,因為主鍵除了唯一地標識一行之外,再沒有其他的用途了,所以也就沒有理由去對它更新。如果主鍵需要更新,則說明主鍵應對用戶無意義的原則被違反了。
註:這項原則對於那些經常需要在
數據轉換或多資料庫合併時進行
數據整理的數據並不適用。
3. 主鍵不應包含動態變化的數據,如
時間戳、創建時間列、修改時間列等。
4. 主鍵應當由計算機自動生成。如果由人來對主鍵的創建進行干預,就會使它帶有除了唯一標識一行以外的意義。一旦越過這個界限,就可能產生人為修改主鍵的動機,這樣,這種系統用來連結記錄行、管理記錄行的關鍵手段就會落入不了解
資料庫設計的人的手中。
主要特點
(1) 一個表中只能有一個主鍵。如果在其他欄位上建立主鍵,則原來的主鍵就會取消。在ACCESS中,雖然主鍵不是必需的,但最好為每個表都設定一個主鍵。
(2)主鍵的值不可重複,也不可為空(NULL)。
定義方法
在表的
設計視圖中,選擇要定義為主鍵的一個或多個欄位(如果是單欄位,可以單擊該欄位左側的選定器;如果是多個欄位,可以先按住CTRL鍵,再次單擊這些欄位的選定器),然後單擊
工具列上的"主鍵"按鈕,或者單擊右鍵,從
快捷選單中選擇“主鍵”命令。
定義主鍵後,在主鍵的左側會顯示一個鑰匙狀的圖示,表示該欄位已被設為主鍵,如果沒有定義主鍵,則在保存表時,ACCESS會彈出一個訊息對話框,詢問用戶是否創建主鍵。如果選擇“否”,則不創建主鍵;選擇“是”,則ACCESS會自動創建一個
自動編號類型的欄位並添加到表的第一列,作為該表的主鍵。
若要取消主鍵,可以先選定該主鍵欄位,再單擊
工具列上的“主鍵”按鈕。
軟道語錄
主鍵
主鍵是實體中用於區分,識別不同實體的屬性。
主鍵方式
在建置新表格時設定主鍵的方式
MySQL:
CREATE TABLE Customer
SID integer,
First_Name varchar(30),
PRIMARY KEY (SID);
CREATE TABLE Customer
SID integer PRIMARY KEY,
Last_Name varchar(30),
First_Name varchar(30);
SQL Server:
CREATE TABLE Customer
SID integer PRIMARY KEY,
Last_Name varchar(30),
First_Name varchar(30);