ACCESS 主キーとは何か

主キーとは何か

ACCESSでテーブルを作成する際に最初に覚えなければいけない概念。
それが主キーです。

Excelでは気にすることがないこの主キーが、データベースソフトであるACCESSでは非常に重要になります。
そこで、初めてACCESSに触れる方にもわかるように、主キーとは何か、設定する際の注意点を解説します。


こんにちは。
はこにわガジェット (@hakoniwagadget) です。

ACCESSを使った売上管理、顧客管理などのデータベース開発を行っています。
ACCESSは使いこなすために少しスキルが必要なものの、うまく活用すればExcelよりも業務の効率化が図れます。
この記事ではACCESSの基本的な使い方をご紹介していきます。

主キーとは?

主キーとはACCESSのテーブルにおいて、レコード(行)を特定するための値です。

ACCESSはExcelとは異なり、リレーショナルデータベースです。
リレーショナルデータベースとは、Excelのシート(表)が複数存在し、複数のシートを連結させて一つの表を表現するような仕組みです。

Excelの表にあたるものがACCESSのテーブルなのですが、複数のテーブルを連結する際に、どの行とどの行をつなぐの判断するために必要なものが主キーでして、ACCESSのテーブルにとって、とても重要なものです。

下記にサンプルテーブルを示しますが、このテーブルでは顧客IDが主キーになります。

主キーの条件

この主キーにはいくつか条件があります。

1.同一テーブルの他のレコードの主キーと値が重複しない

主キーはレコードを特定するために使用します。
そのため、同じテーブル内で主キーが同じレコードが有ると、レコードを特定できません。
主キーは絶対に重複しない値であることが条件です。

これを、ユニークである、といいます。

2.必ず値を入力する

レコードを特定するために、主キーが空白であることも許されません。
主キーには必ず値が入力されている必要があります。

こう記載すると難しそうに聞こえますが、とても簡単に言うと、どのテーブルにも必ず、1から連番で値が入る列(フィールド)が1つあれば、それを主キーにすることができます。

主キーの必要性

では、主キーはなぜ必要なのでしょうか。

ACCESSでは下図のように、複数のテーブルをつないでいきます。

上記の例では、売上マスターと商品マスターが、商品IDをキー値としてつながっています。

例えば、売上マスターの売上ID:1は商品ID:1、つまりACCESS新規開発を販売していることが分かります。
こうしたテーブル間の連携が前提となっている中で、例えば商品マスターの商品IDが重複していると、売上マスター側はどの商品なのか判断がつきません。

こうしたことを防ぐために、主キーをテーブルに設定して、テーブル間の連携(リレーション)を担保するのです。

主キーの設定方法

それでは、実際のACCESSでの主キーの設定方法を見ていきましょう。

まず、デザインビューでテーブルを作成します。
すると、上段のメニューに「主キー」という鍵のマークがついたボタンがあります。
主キーにしたいフィールドを選択して、このボタンを押すと、下図のようにフィールド名の左に鍵のマークがつきます。

これで主キーの設定は完了です。

テーブルをデザインビューで作成して、主キーを設定し忘れた場合はACCESSからアラートが出ますので、それに従って主キーを設定することもできます。

いずれにしても非常に重要な設定ですので、テーブル作成時は忘れないようにしましょう。

主キー作成のコツ

最後に、主キーを作成する際のコツをお伝えします。
これは、必ず守らなければならない、というものではないのですが、ACCESSを開発・運用していく上で、不要なトラブルを防ぐためのノウハウです。

というのは、テーブルと主キー設定はACCCESSデータベースの根幹なので、データベースを作成してデータを入力し、運用してから主キーを変更するのはとても大変なのです。
ですので、後に主キーの変更という作業が絶対におこならないように設計することが重要です。

では、コツを見ていきましょう。

主キーの名称はテーブルの名称と合わせる

どのフィールドが主キーなの間違えにくくするため、テーブルの名称と主キーの名称を合わせましょう。
私は、売上テーブルであれば主キーは売上ID、顧客テーブルであれば顧客IDというように命名規則を統一しています。

これが、売上テーブルは売上ID、顧客テーブルは会員番号、商品テーブルは商品No等、名称がばらばらだと主キーが分かりにくく、データベース開発上のミスを生む恐れがあります。

主キーはテーブルの最初のフィールドに設定する

これも、間違いを防ぐためのルールです。

テーブルを作成したら、必ず最初のフィールドを主キーにしています。
こうすることで主キーの設定し忘れや、他のテーブルとリレーション設定をする際に主キーを間違えることを防いでいます。

主キーはオートナンバー型にする

主キーのフィールドのデータ型はオートナンバー型をお勧めします。
オートナンバー型はACCESSの標準機能で、レコードが増えるたびに新しい番号を自動採番してくれる機能です。

え?オートナンバー型以外を使うことがあるの?

と思われた方がいるかもしれません。
おそらく主キーをオートナンバーにしている方は多いと思いますが、オートナンバー型は途中でレコードを削除するとその番号が飛んでしまいます。

例えば、オートナンバー型のフィールドに1~5の値が入っているテーブルで3を削除すると、次は6から採番されて永遠に3は埋まりません。

ACCESSを始めて使われる方の中には、これが気持ち悪い、ということで3が無ければ次は3を採番してほしいと考え、VBAで欠番を採番するようにする方がいらっしゃいます。

このこと自体は個人の好みなのでよいのですが、データベースを運用後の状況を考えると、VBAでの制御は不測のエラーを招く可能性があり、主キーというデータベースの根幹となる値の採番にVBAを用いることはお勧めできません。

主キーが絶対に空白になったり重複しないよう、ACCESSの基本機能として案してして動作するオートナンバーでの採番をお勧めします。

以上、主キーとは何か、をご紹介しました。


ACCESSを使いこなせば、業務の効率化や自動化が実現できます。
しかし、自分でACCESSを学ぶには時間がない、難しそうで不安、という方も多いでしょう。

そんな時は、ACCESS開発歴20年以上、過去に100以上のACCESSデータベースを開発してきた私(@hakoniwagadget)にお任せください。

ACCESSの新規開発、既存のACCESSの修正、ACCESSの操作レッスンなど様々なサービスをご提供しています。
ご興味のある方は下記のサービス一覧をご覧ください。

サービス一覧

最後までお読みいただき、ありがとうございました。