主キーを追加、設定、変更、削除する

主キーを追加、設定、変更、削除する

重要:  この記事は機械翻訳されています。機械翻訳についての「免責事項」をお読みください。この記事の英語版を参照するには、ここをクリックしてください。

データベースの各テーブルには主キーが必要です。主キーとは、テーブルに格納されている各レコードに対して一意の値を持つ 1 つのフィールドまたは複数のフィールドのセットです。主キーを使うと、個々のレコードを識別し、参照することができます。

Access では、テーブルの作成時に主キー フィールドを自動で作成することも、主キーに使用するフィールドを指定することもできます。ここでは、主キーを使用する方法と理由について説明します。

主キーを作成する理由の 1 つは、テーブル リレーションシップの作成に使用するためです。ここでは、リレーションシップを作成する方法については説明しません。詳細については、参照セクションを参照してください。

この記事の内容

概要

オートナンバー型主キーを追加する

主キーとして使用するフィールドを指定する

主キーを削除する

SQL を使用して主キーを作成または削除する

関連情報

概要

データベースを設計する場合、テーブルごとに 1 つの主題 (顧客や受注など) になるようにデータベースの情報を分割します。情報を分割すると、データの重複や矛盾を回避できます。

たとえば、各顧客に多くの注文がある場合、"受注" テーブルのレコードごとに顧客の住所を格納せずに、住所の情報を "顧客" テーブルのレコードに 1 回だけ格納します。顧客の情報と注文に関するその他の情報を組み合わせるために、キー フィールドを使用して 2 つのテーブル間にリレーションシップを作成します。

主キー

1 つのテーブルに設定できる主キーは 1 つだけです。主キーは、以下の性質がある 1 つのフィールドまたは複数のフィールドのセットです。

  • 各レコードに対して一意の値を持つ

  • インデックス化されている

  • レコードを識別する

あるテーブルの主キーを別のテーブルに追加して、それらのテーブル間のリレーションシップを作成できます。その主キーは、別のテーブルでは外部キーと呼ばれます。

たとえば、"顧客" テーブルの主キーを "受注" テーブルで使用するとします。この主キーは、"受注" テーブルでは、外部キーになります。

2 つの Access データシートの間に表示される主キーと外部キー

1. 主キー

2. 外部キー

外部キー

簡単に言うと、外部キーは他のテーブルの主キーです。外部キー フィールドの値は、主キーの値と一致するため、2 つのレコードが関連していることがわかります。たとえば、顧客と、その顧客による注文の関連性です。主キーと違い、外部キーには以下の特性があります。

  • 1 つのテーブルに複数の外部キーを設定できます。

  • 外部キーは、必ずしも一意の値を持つ必要はありません。

  • 外部キーでは、特定のレコードを確実には識別できません。たとえば、"受注" テーブルで "顧客 ID" を見ても、個々のレコードを識別できないことがあります。

外部キーは、ルックアップ ウィザードでフィールドを作成するときに作成できます。

候補キー

シリアル番号や商品コードなど、場合によっては、主キーに適したフィールドがテーブル上に既に存在することがあります。そのようなフィールドは、候補キーと呼ばれます。

たとえば、高校卒業後の成績を追跡する場合に、"大学" テーブルを使用することがあります。各大学のコード番号を提供する、公的なデータベースがあるとしましょう。たとえば、米国教育省の IPEDS (Integrated Postsecondary Education Data System) のようなデータベースがあれば、そのデータベース システムが提供するコードを "大学" テーブルの主キーとして使用することができます。

候補キーとして適したフィールドには、次のような特性があります。

  • 各値が一意である。テーブル内に、キーに対して同じ値を持つ複数のレコードは存在しない。

  • 空または null でない、値を常に含まれています。

  • 設定後、それぞれの値が比較的変わらない。理想としては、キー フィールドの値は、追加または削除のみが可能で、変わらないことが望まれます。

主キーの選択として良くない例は、顧客名です。一意な名前もありますが、そうでない名前もあります。値が一意であることが確実ではないため、名前は候補キーになりません。

データシート ビューで新しいテーブルを作成すると、Access によって自動的に主キー フィールドが作成され、フィールド名、フィールド ID、オートナンバー型が割り当てられます。このフィールドは、データシート ビューでは既定で非表示になっていますが、デザイン ビューに切り替えると表示できます。

オートナンバー型フィールド

テーブルに候補キーとして適切なフィールドがなく、データシート ビューでテーブルを作成しなかった場合は、オートナンバー型のフィールドを追加して、そのフィールドを主キーとして使用することを検討してください。オートナンバー型フィールドには、追加されるレコードごとに新しい一意の値が自動的に割り当てられます。レコードを削除しても、その値は再利用されません。したがって、オートナンバー型フィールドでは各レコードの値が一意で、適切な主キーになります。

[商品] テーブルと主キー フィールドを示す画像

1. 多くの場合、オートナンバー型の列は主キーに適しています。それは、2 つの商品コードが同じであることはないからです。

複合キー

複数のフィールドを組み合わせてテーブルの主キーとして使用したい場合があります。たとえば、注文の一覧を保存している "受注明細" テーブルでは、主キーに "受注 ID" と "商品 ID" の 2 つのフィールドを使用することがあります。複数のフィールドを使用しているキーは、複合キーと呼ばれます。

注: 複合外部キーは、ルックアップ ウィザードでは作成できません。複合外部キーは、データ定義クエリを使用して複数のフィールドの制約を作成することによって作成できます。詳細については、「データ定義クエリを使用してテーブルまたはインデックスを作成または変更する」を参照してください。

ページの先頭へ

オートナンバー型主キーを追加する

  1. ナビゲーション ウィンドウで、主キーを追加するテーブルを右クリックし、ショートカット メニューの [デザイン ビュー] をクリックします。

  2. テーブル デザイン グリッドの最初の空の行にある [フィールド名] 列で、「顧客 ID」のように名前を入力します。

  3. [データ型] 列で、ドロップダウン矢印をクリックして [オートナンバー型] をクリックします。

  4. [フィールド プロパティ] の [新規レコードの値] で、[増分記号] をクリックして主キーにインクリメンタル数値を使用するか、[ランダム] をクリックして乱数を使用します。

  5. [デザイン] タブの [ツール] で、[主キー] をクリックします。

    [デザイン] タブの [ツール]

    キー インジケーターが、オートナンバー型フィールドの左側に表示されます。

    Ctrl キーを押しながら S キーを押して、テーブル デザインの変更内容を保存します。

ページの先頭へ

主キーとして使用するフィールドを指定する

  1. ナビゲーション ウィンドウで、主キーを設定するテーブルを右クリックし、ショートカット メニューの [デザイン ビュー] をクリックします。

  2. 主キーとして使用するフィールド (1 つまたは複数) を選択します。

    ヒント: 複数のフィールドを選ぶには、Ctrl キーを押しながらフィールドをクリックします。

  3. [デザイン] タブの [ツール] で、[主キー] をクリックします。

    [デザイン] タブの [ツール]

    キー インジケーターが、主キーに指定した 1 つまたは複数のフィールドの左側に表示されます。

    Ctrl キーを押しながら S キーを押して、テーブル デザインの変更内容を保存します。

ページの先頭へ

主キーを削除する

テーブルの主キーを削除すると、主キーに設定されていたフィールドはレコードを識別するための主な手段でなくなります。ただし、主キーを削除しても主キーに設定されていたフィールドはテーブルから削除されません。その代わり、主キー表示がこれらのフィールドから削除されます。

主キーを削除すると、主キーに対して作成されたインデックスも削除されます。

  1. 主キーを削除する前に、テーブル リレーションシップが主キーに設定されていないことを確認する必要があります。テーブル リレーションシップが設定されている主キーを削除しようとすると、リレーションシップを最初に削除する必要があることを示すメッセージが表示されます。

    テーブル リレーションシップを削除する

    1. テーブル リレーションシップが設定されているテーブルが開いている場合は、閉じます。開いているテーブル間に設定されているテーブル リレーションシップは、削除することができません。

    2. [データベース ツール] タブの [表示/非表示] で [リレーションシップ] をクリックします。

      Access のリボンの画像

    3. テーブル リレーションシップが設定されているテーブルが表示されていない場合は、[デザイン] タブの [リレーションシップ] で [テーブルの表示] をクリックします。次に、[テーブルの表示] ダイアログ ボックスで、追加するテーブルを選択して [追加] をクリックします。次に、[閉じる] をクリックします。

    4. 削除するテーブル リレーションシップ行をクリックし (選んだ行は太字で表示されます)、Del キーを押します。

    5. [デザイン] タブの [リレーションシップ] で [閉じる] をクリックします。

      リボンの [デザイン] タブの [リレーションシップ] グループ

  2. ナビゲーション ウィンドウで、主キーを削除するテーブルを右クリックし、ショートカット メニューの [デザイン ビュー] をクリックします。

  3. 現在の主キー フィールドを選びます。

    主キーが複数のフィールドで構成されている場合は、主キーのいずれかのフィールドの行セレクタをクリックします。

  4. [デザイン] タブで、[ツール] の [主キーの設定] をクリックします。

    [デザイン] タブの [ツール]

    キー インジケータが、主キーに指定されていた 1 つまたは複数のフィールドから削除されます。

注: 主キーを設定しないで新しいテーブルを保存すると、主キーを作成するように促すメッセージが表示されます。[はい] を選ぶと、各レコードに一意の値を設定するためのオートナンバー型を使用する ID フィールドが作成されます。テーブルに既にオートナンバー型フィールドが格納されている場合は、それが主キーとして使用されます。

ページの先頭へ

主キーを変更する

テーブルの主キーを変更するには、次の手順に従います。

  1. 主キーを削除する」の手順に従って既存の主キーを削除します。

  2. 主キーとして使用するフィールドを指定する」の手順に従って新しい主キーを作成します。


ページの先頭へ

SQL を使用して主キーを作成または削除する

Access では、主キーはインデックスとして実装されます。デザイン ビューで主キーを作成すると、インデックスが自動的に作成されます。必要に応じて、データ定義クエリを使用して主キーを作成できます。同じ主キーを作成するときはいつでもクエリを再利用できます。クエリの再利用は、定期的にテーブルを削除して再作成する場合に便利です。

SQL を使用して主キーを作成する

既存のテーブルの主キーを作成するには、CREATE INDEX コマンドを使用します。

CREATE INDEX コマンドは、データ定義クエリで使用します。

  1. [作成] タブの [その他] で、[クエリ デザイン] をクリックします。

  2. [テーブルの表示] ダイアログ ボックスを閉じます。

  3. [デザイン] タブの [クエリの種類] グループで [データの定義] をクリックします。

    クエリが SQL ビューに切り替わります。

  4. 以下の SQL をクエリに入力するか、コピーして貼り付けます。

    CREATE INDEX 
    ON ( )
    WITH PRIMARY
  5. 最初の行の末尾に、インデックスの名前を入力します。

    ヒント: 名前の冒頭の文字を「pk」と設定して、このインデックスが主キーであることを示すようにします。主キーのインデックスを一貫した名前にすると、他のインデックスと区別しやすくなります。

  6. 2 行目の ON キーワードの後、かっこの前に、テーブルの名前を入力します。

  7. かっこ内に、主キーとして使用するフィールドを入力します。複数のフィールドを入力する場合は、カンマでフィールドを区切ります。

  8. クエリを保存するには、Ctrl キーを押しながら S キーを押します。

    注: 既にあるインデックスは作成できません。主キーを作成するクエリを再利用したい場合は、まず既存の主キーを削除する必要があります。

SQL を使用して主キーを削除する

主キーをテーブルから削除するには、DROP INDEX コマンドを使用します。

DROP INDEX コマンドは、データ定義クエリで使用します。

  1. [作成] タブの [その他] で、[クエリ デザイン] をクリックします。

  2. [テーブルの表示] ダイアログ ボックスを閉じます。

  3. [デザイン] タブの [クエリの種類] グループで [データの定義] をクリックします。

    クエリが SQL ビューに切り替わります。

  4. 以下の SQL をクエリに入力するか、コピーして貼り付けます。

    DROP INDEX 
    ON
  5. 最初の行の末尾に、インデックスの名前を入力します。

    ヒント: インデックスの名前がわからない場合は、検索で見つけることができます。最初に、デザイン ビューでテーブルを開きます。[デザイン] タブの [表示/非表示] グループで [インデックス] をクリックします。

  6. 2 行目の ON キーワードの後、かっこの前に、テーブルの名前を入力します。

  7. クエリを保存するには、Ctrl キーを押しながら S キーを押します。

関連情報

データベース デザインと適切な主キーの選択の詳細については、「データベース設計の基本」および「テーブルを作成する」を参照してください。

ページの先頭へ

注: 機械翻訳についての免責事項: この記事の翻訳はコンピューター システムによって行われており、人間の手は加えられていません。マイクロソフトでは、英語を話さないユーザーがマイクロソフトの製品、サービス、テクノロジに関するコンテンツを理解するのに役立てるため、こうした機械翻訳を提供しています。記事は機械翻訳されているため、用語、構文、文法などに誤りがある場合があります。

スキルを磨く
トレーニングの探索
新機能を最初に入手
Office Insider に参加する

この情報は役に立ちましたか?

ご意見をいただきありがとうございます。

フィードバックをお寄せいただき、ありがとうございます。Office サポートの担当者におつなぎいたします。

×