創(chuàng)建或修改表的主鍵
數(shù)據(jù)庫中的每個表都應(yīng)該有一個字段或字段集,用來唯一標(biāo)識該表中存儲的每條記錄。這個字段或字段集稱為主鍵。本文將討論主鍵的作用并介紹添加、設(shè)置、更改或刪除主鍵的方法。
本文內(nèi)容
主鍵是表中的一個字段或字段集,為每條記錄提供一個唯一的標(biāo)識符。在數(shù)據(jù)庫中,請將信息劃分到基于主題的不同表中。然后,使用表關(guān)系和主鍵以指示 Access 如何將信息再次組合起來。Access 使用主鍵字段將多個表中的數(shù)據(jù)迅速關(guān)聯(lián)起來,并以一種有意義的方式將這些數(shù)據(jù)組合在一起。
可以包含其他表中的主鍵字段以向回引用主鍵源的表。在這些其他表中,字段稱為外鍵。例如,“客戶”表中的“客戶 ID”字段也可能會顯示在“訂單”表中。在“客戶”表中,它是主鍵, 而在“訂單”表中,它被稱作外鍵。簡而言之,外鍵就是另一個表的主鍵。
主鍵
外鍵
如果將現(xiàn)有數(shù)據(jù)移到數(shù)據(jù)庫中,您可能已經(jīng)擁有了可用作主鍵的字段。通常,唯一的標(biāo)識號(如 ID 號、序列號或代碼)充當(dāng)表中的主鍵。例如,您可能有一個“客戶”表,其中每個客戶都有一個唯一的客戶 ID 號??蛻?ID 字段是主鍵。
一個好的候選主鍵具有以下幾個特征:
✍ | 唯一標(biāo)識每一行 |
✍ | 從不為空或?yàn)?Null,即它始終包含一個值 |
✍ | 所包含的值幾乎不(理想情況下永不)改變 |
缺少一個或多個好的候選主鍵特征的任何字段對于主鍵都是糟糕的選擇。下面是幾個示例以及成為糟糕選擇的原因。
✍ | 個人姓名 成為糟糕選擇的原因是,可能不確實(shí)唯一,還可能改變。 |
✍ | 電話號碼 成為糟糕選擇的原因是,它可能會改變。 |
✍ | 電子郵件地址 成為糟糕選擇的原因是,它可能會改變。 |
✍ | 事實(shí)和數(shù)字的組合 如果事實(shí)部分可能會更改則成為糟糕選擇。這種組合還難以保留,如果事實(shí)部分作為單獨(dú)的字段進(jìn)行重復(fù),則可能導(dǎo)致混亂。例如,包含城市和增量號碼(如 NEWYORK0579)的帳戶 ID,如果城市也存儲為字段,則是糟糕的選擇。 |
應(yīng)該始終為表指定一個主鍵。Access 會自動為主鍵創(chuàng)建索引,這有助于加快查詢和其他操作的速度。Access 還確保每條記錄的主鍵字段中都有一個值,并且該值始終是唯一的。
在數(shù)據(jù)表視圖中創(chuàng)建新表時,Access 自動為您創(chuàng)建主鍵,并且為它指定字段名“ID”和“自動編號”數(shù)據(jù)類型。默認(rèn)情況下,該字段在“數(shù)據(jù)表視圖”中為隱藏狀態(tài),但切換到“設(shè)計視圖”后就可以看到該字段。
提示 如果一個表沒有好的候選鍵,請考慮添加一個具有“自動編號”數(shù)據(jù)類型的字段,并將該字段用作主鍵。
數(shù)據(jù)類型為“自動編號”的列通常是一個不錯的主鍵,因?yàn)樗_保值是唯一的。
在某些情況下,您可能想使用兩個或多個字段一起作為表的主鍵。例如,存儲訂單行項(xiàng)目的“訂單細(xì)節(jié)”表將在其主鍵中使用兩個列:“訂單 ID”和“產(chǎn)品 ID”。當(dāng)一個主鍵使用多個列時,它又被稱為復(fù)合鍵。
注釋 在數(shù)據(jù)表視圖中創(chuàng)建新表時,Access 自動為您創(chuàng)建主鍵,并且為它指定“自動編號”數(shù)據(jù)類型。
1. | 打開要修改的數(shù)據(jù)庫。 |
2. | 在導(dǎo)航窗格中,右鍵單擊要向其添加主鍵的表,然后在快捷菜單上,單擊“設(shè)計視圖”。 |
提示 如果未顯示導(dǎo)航窗格,請按 F11 顯示導(dǎo)航窗格。
3. | 在表設(shè)計網(wǎng)格中找到第一個可用的空行。 |
4. | 在“字段名稱”列中鍵入名稱,如 CustomerID。 |
5. | 在“數(shù)據(jù)類型”列中,單擊下拉箭頭并單擊“自動編號”。 |
6. | 在“常規(guī)”中的“新值”中,單擊“遞增”對主鍵使用遞增數(shù)值,或者單擊“隨機(jī)”使用隨機(jī)數(shù)。 |
如果您有一個表,其中每條記錄都有一個唯一的標(biāo)識號(如 ID 號、序列號或編碼),則該字段可以作為一個不錯的主鍵。要使主鍵正常工作,該字段必須唯一標(biāo)識每一行,決不包含空值或 Null 值,并且很少(理想情況下永不)改變。
1. | 打開要修改的數(shù)據(jù)庫。 |
2. | 在導(dǎo)航窗格中,右鍵單擊要設(shè)置主鍵的表,然后在快捷菜單上,單擊“設(shè)計視圖”。 |
提示 如果未顯示導(dǎo)航窗格,請按 F11 顯示導(dǎo)航窗格。
3. | 選擇要用作主鍵的一個或多個字段。 |
若要選擇一個字段,請單擊所需字段的行選擇器。
要選擇多個字段,請按住 Ctrl,然后單擊每個字段的行選擇器。
4. | 在“設(shè)計”選項(xiàng)卡上的“工具”組中,單擊“主鍵”。 |
鍵指示器添加到您指定為主鍵的一個或多個字段的左側(cè)。
刪除主鍵時,以前作為主鍵的一個或多個字段將不再作為標(biāo)識記錄的主要方式。然而,刪除主鍵不會刪除表中的一個或多個字段。相反,刪除的是這些字段中的主鍵指定。
刪除主鍵還會刪除為該主鍵創(chuàng)建的索引。
1. | 打開要修改的數(shù)據(jù)庫。 |
2. | 在刪除主鍵之前,必須確保它沒有參與任何表關(guān)系。如果您嘗試刪除的主鍵是一個或多個關(guān)系的一部分,Access 會警告您必須先刪除這些關(guān)系。 |
1. | 如果參與表關(guān)系的表處于打開狀態(tài),則請關(guān)閉它們。不能刪除打開的表之間的表關(guān)系。 |
2. | 在“數(shù)據(jù)庫工具”選項(xiàng)卡上的“顯示/隱藏”組中,單擊“關(guān)系”。 |
3. | 如果參與表關(guān)系中的表不可見,則在“設(shè)計”選項(xiàng)卡上的“關(guān)系”組中,單擊“顯示表”。然后,在“顯示表”對話框中選擇要添加的表,單擊“添加”,然后單擊“關(guān)閉”。 |
4. | 單擊要刪除的表關(guān)系的表關(guān)系行(當(dāng)選中該行時,該行變粗),然后按 Delete 鍵。 |
5. | 在“設(shè)計”選項(xiàng)卡上的“關(guān)系”組中,單擊“關(guān)閉”。 |
3. | 在導(dǎo)航窗格中,右鍵單擊要刪除的主鍵所在的表,然后在快捷菜單上,單擊“設(shè)計視圖”。 |
提示 如果未顯示導(dǎo)航窗格,請按 F11 顯示導(dǎo)航窗格。
4. | 單擊當(dāng)前主鍵的行選擇器。 |
如果該主鍵只包含一個字段,則單擊該字段的行選擇器。
如果該主鍵包含多個字段,則單擊該主鍵中任何字段的行選擇器。
5. | 在“設(shè)計”選項(xiàng)卡上的“工具”組中,單擊“主鍵”。 |
以前指定為主鍵的一個或多個字段中的鍵指示器被刪除。
注釋 保存一個新表而不設(shè)置主鍵時,Access 會提示您創(chuàng)建一個主鍵。如果選擇“是”,Access 會創(chuàng)建一個使用“自動編號”數(shù)據(jù)類型的 ID 字段,為每條記錄提供一個唯一值。如果您的表中已有一個“自動編號”字段,Access 會將該字段用作主鍵。
如果決定更改表的主鍵,則可以通過執(zhí)行下列步驟來完成:
1. | 使用刪除主鍵部分中的說明刪除現(xiàn)有的主鍵。 |
2. | 使用設(shè)置主鍵部分中的說明設(shè)置主鍵。 |