主キーは、テーブル全体で一意の値を持つ 1 つのフィールドまたは一連のフィールドです。 各レコードはキーの値が異なるため、キーの値を使用してレコード全体を参照することができます。 各テーブルの主キーは 1 つのみです。 Access は、テーブルの作成時に自動的に主キー フィールドを作成することも、主キーとして使用するフィールドを指定することもできます。 この記事では、主キーを使用する方法とその理由について説明します。
テーブルの主キーを設定するには、デザイン ビューでテーブルを開きます。 使用するフィールド (複数のフィールド) を選択して、リボンの [主キー] をクリックします。
注: この記事は、 Access デスクトップ データベースでのみ使用することを目的としています。 Access は、 Access Web アプリと Web データベース内の新しいテーブルの主キーを自動的に管理します。 これらの自動主キーをオーバーライドすることはできますが、これを行うことをお勧めしません。
この記事の内容
Accessの主キーの概要
Access では、主キー フィールドを使用して、複数のテーブルのデータをすばやく関連付け、そのデータを意味のある方法で結合します。 他のテーブルの主キー フィールドをインクルードすると、その主キーの元になったテーブルを参照することができます。 これらの他のテーブルで、このフィールドは外部キーと呼ばれます。 たとえば、"得意先" テーブルの "得意先コード" フィールドは、"受注" テーブルにも表示されることがあります。 "得意先" テーブルで "得意先コード" フィールドは主キーです。 "受注" テーブルで "得意先コード" フィールドは、外部キーと呼ばれます。 簡単に言うと、外部キーは他のテーブルの主キーです。 詳細については、「データベース設計の基本」をご覧ください。
1. 主キー
2. 外部キー
既存のデータをデータベースに移動する場合、主キーとして使用できるフィールドが既に存在することがあります。 多くの場合、コード番号、通し番号やコードなどの、固有の識別番号はテーブルの主キーとなっています。 たとえば、"得意先" テーブルでは、得意先ごとに一意な得意先 ID 番号が割り当てられます。 この場合、"得意先 ID" フィールドが主キーです。
Access は、主キーのインデックスを自動的に作成し、クエリやその他の操作を高速化するのに役立ちます。 Access は、すべてのレコードが主キー フィールドに値を持ち、常に一意であることを保証します。
データシート ビューで新しいテーブルを作成すると、 Access 自動的に主キーが作成され、"ID" と AutoNumber データ型のフィールド名が割り当てられます。
主キーに適した特性
主キーに適したフィールドには、いくつかの特性があります。
-
各行を一意に識別する
-
必ず値を持ち、空または Null でない
-
保存する値がめったに (理想的にはまったく) 変更されない
適切なキーを特定できない場合は、キーとして使用する AutoNumber フィールドを作成します。 オートナンバー型フィールドでは、各レコードが初めて保存されたときに値が自動的に生成されます。 このため、オートナンバー型フィールドは、適切な主キーの 3 つ特性をすべて満たしています。 オートナンバー型フィールドを追加する方法の詳細については、「オートナンバー型フィールドを主キーとして追加する」をご覧ください。
オートナンバー型のフィールドにより適切な主キーが作成されます。
主キーに適さないフィールドの例
主キーに適した特性の 1 つ以上に該当しないフィールドは、主キーとして使用するのに適していません。 ここでは、"連絡先" テーブルの主キーに適さないフィールドの例を、主キーに適さない理由と共に示します。
|
不適切な主キー |
理由 |
|---|---|
|
氏名 |
一意でない可能性があり、変更されることもあります。 |
|
電話番号 |
変更される可能性があります。 |
|
電子メール アドレス |
変更される可能性があります。 |
|
郵便番号 |
複数のユーザーで同じ郵便番号の場合があります。 |
|
具体名と番号の組み合わせ |
具体名の部分が変更され、保守に負担がかかる場合があります。 具体名の部分が別のフィールドとして繰り返し使用されると、混乱の原因になるおそれがあります。 たとえば、市区町村を結合して 1 ずつ増加する番号 (例: 東京0579) は、都市名がフィールドとして保存されていても、主キーに適していません。 |
|
社会保障番号 |
|
複合キー: 複数のフィールドを組み合わせて主キーとして使用
テーブルの 2 つ以上のフィールドを主キーとして使用する場合もあります。 たとえば、注文の一覧を保存している "受注明細" テーブルでは、"受注 ID" フィールドと "商品 ID" フィールドの 2 つのフィールドを主キーとして使用する場合があります。 複数のフィールドを含むキーは複合キーと呼ばれます。
Accessに既に存在するフィールドを使用して主キーを設定する
主キーが正常に機能するには、主キーに設定されたフィールドによって各行が一意に識別されること、空または Null 値のフィールドがないこと、フィールドがほとんど (理想的にはまったく) 変更されないことが必要です。 主キーを設定するには、次の操作を行います。
-
変更するデータベースを開きます。
-
ナビゲーション ウィンドウで、主キーを設定するテーブルを右クリックし、ショートカット メニューの [デザイン ビュー] をクリックします。
ヒント: ナビゲーション ウィンドウが表示されない場合は、F11 キーを押すと表示されます。
-
主キーとして使用するフィールド (1 つまたは複数) を選択します。
単一のフィールドを選択するには、目的のフィールドの行セレクターをクリックします。
複数のフィールドを選択して複合キーを作成するには、Ctrl キーを押しながら各フィールドの行セレクターをクリックします。
-
[ テーブル デザイン ] タブの [ ツール ] グループで、[ 主キー] をクリックします。
キー インジケーターは、主キーに指定した 1 つまたは複数のフィールドの左側に追加されます。
Accessで主キーを削除する
主キーを削除すると、主キーに設定されていたフィールドはレコードを識別するための主な手段ではなくなります。
主キーを削除しても、テーブルからフィールドは削除されませんが、主キー用に作成されたインデックスは削除されます。
-
主キーを削除する前に、テーブル リレーションシップが主キーに設定されていないことを確認する必要があります。 1 つ以上のリレーションシップの一部である主キーを削除しようとすると、最初にリレーションシップを削除する必要があることを警告 Access 。テーブル リレーションシップを削除するには、次の手順を実行します。
-
テーブル リレーションシップが設定されているテーブルが開いている場合は、閉じます。 開いているテーブル間に設定されているテーブル リレーションシップは、削除することができません。
-
[データベース ツール] タブの [リレーションシップ] グループで [リレーションシップ] をクリックします。
-
[ テーブルの追加] を選択します。
-
削除するテーブル リレーションシップをクリックして選択します (選択したリレーションシップは太字で表示されます)。次に、Del キーを押します。
-
[ リレーションシップ デザイン] タブの [ リレーションシップ ] グループで、[ 閉じる] をクリックします。
-
-
リレーションシップを削除した後に、ナビゲーション ウィンドウで、主キーを削除するテーブルを右クリックし、ショートカット メニューの [デザイン ビュー] をクリックします。
ヒント: ナビゲーション ウィンドウが表示されない場合は、F11 キーを押すと表示されます。
-
現在の主キーの行セレクターをクリックします。
主キーが単一のフィールドで構成される場合は、そのフィールドの行セレクターをクリックします。
主キーが複数のフィールドで構成される場合は、主キーのいずれかのフィールドの行セレクターをクリックします。
-
[ テーブル デザイン ] タブの [ ツール ] グループで、[ 主キー] をクリックします。
キー インジケーターが、主キーに指定されていた 1 つまたは複数のフィールドから削除されます。
注: 主キーを設定せずに新しいテーブルを保存すると、 Access に作成するように求められます。 [はい] を選択 Access 、AutoNumber データ型を使用してレコードごとに一意の値を指定する ID フィールドを作成します。 テーブルに AutoNumber フィールドが既に含まれている場合、 Access はそのフィールドを主キーとして使用します。
Accessで主キーを変更する
テーブルの主キーを変更する場合は、次の手順に従ってください。
追加情報
データベース設計と適切な主キーの選択に関する詳細については、次の記事を参照してください。