主關鍵字(primary key)是表中的一個或多個字段,它的值用于唯一地標識表中的某一條記錄。在兩個表的關系中,主關鍵字用來在一個表中引用來自于另一個表中的特定記錄。主關鍵字是一種唯一關鍵字,表定義的一部分。一個表不能有多個主關鍵字,并且主關鍵字的列不能包含空值。主關鍵字是可選的,并且可在CREATE TABLE或ALTER TABLE語句中定義。
中文名主鍵
英文名primary key
介紹一個表只有一個主關鍵詞
作用保持實體的完整性
概念主關鍵字(主鍵,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.主鍵應當是對用戶沒有意義的。如果用戶看到了一個表示多對多關系的連接表中的數據,并抱怨它沒有什么用處,那就證明它的主鍵設計地很好。[1]
2.永遠也不要更新主鍵。實際上,因為主鍵除了唯一地標識一行之外,再沒有其他的用途了,所以也就沒有理由去對它更新。如果主鍵需要更新,則說明主鍵應對用戶無意義的原則被違反了。
注:這項原則對于那些經常需要在數據轉換或多數據庫合并時進行數據整理的數據并不適用。
3.主鍵不應包含動態變化的數據,如時間戳、創建時間列、修改時間列等。
4.主鍵應當由計算機自動生成。如果由人來對主鍵的創建進行干預,就會使它帶有除了唯一標識一行以外的意義。一旦越過這個界限,就可能產生認為修改主鍵的動機,這樣,這種系統用來鏈接記錄行、管理記錄行的關鍵手段就會落入不了解數據庫設計的人的手中。
特點1)一個表中只能有一個主鍵。如果在其他字段上建立主鍵,則原來的主鍵就會取消。在ACCESS中,雖然主鍵不是必需的,但最好為每個表都設置一個主鍵。[2]
2)主鍵的值不可重復,也不可為空(NULL)。
定義方法在表的設計視圖中,選擇要定義為主鍵的一個或多個字段(如果是單字段,可以單擊該字段左側的選定器;如果是多個字段,可以先按住CTRL鍵,再次單擊這些字段的選定器),然后單擊工具欄上的"主鍵"按鈕,或者單擊右鍵,從快捷菜單中選擇“主鍵”命令。
定義主鍵后,在主鍵的左側會顯示一個鑰匙狀的圖標,表示該字段已被設為主鍵,如果沒有定義主鍵,則在保存表時,ACCESS會彈出一個消息對話框,詢問用戶是否創建主鍵。如果選擇“否”,則不創建主鍵;選擇“是”,則ACCESS會自動創建一個自動編號類型的字段并添加到表的第一列,作為該表的主鍵。
若要取消主鍵,可以先選定該主鍵字段,再單擊工具欄上的“主鍵”按鈕。
主鍵是實體中用于區分,識別不同實體的屬性。
主鍵方式在建置新表格時設定主鍵的方式
MySQL:
CREATE?TABLE?Customer
(SID?integer,
Last_Name?varchar(30),
First_Name?varchar(30),
PRIMARY?KEY?(SID));
Oracle:
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))。
參考資料本文發布于:2023-06-04 15:17:08,感謝您對本站的認可!
本文鏈接:http://m.newhan.cn/zhishi/a/92/198108.html
版權聲明:本站內容均來自互聯網,僅供演示用,請勿用于商業和其他非法用途。如果侵犯了您的權益請與我們聯系,我們將在24小時內刪除。
本文word下載地址:主鍵(計算機專有名詞).doc
本文 PDF 下載地址:主鍵(計算機專有名詞).pdf
| 留言與評論(共有 0 條評論) |