Accessの主キーについてお探しですね。

広告

データベースの命!Accessにおける「主キー」の役割とオートナンバーのリセット法

Accessを使い始めたばかりの方が最初につまずくのが、「主キー(プライマリキー)」という聞き慣れない言葉です。

Excelで表を作るときには気にしなくてよかったのに、Accessではテーブルを作るたびに「主キーを設定してください」と言われたり、勝手に振られた番号が1、2、4、7…と飛び飛びになってしまったりして、「なんで?」と思うことも多いでしょう。

でも、この主キーこそが、データベースの「背骨」とも言える大切な仕組みなんです。

これを理解しないままAccessを使うと、あとで痛い目に遭うことも。

この記事では、「なぜ主キーが必要なの?」という基本から、「番号が飛んじゃったときの直し方」まで、できるだけわかりやすく説明していきます。

これを読めば、データがぐちゃぐちゃにならない、しっかりしたシステムが作れるようになりますよ。

Accessにおける「主キー」とは?データベースを支える大切な役割

まず押さえておきたいのは、なぜAccessのようなデータベースで主キーがこんなに重要なのか、という点です。

Excelなら、データは「上から何行目」という位置で管理できます。

でもデータベースの世界では、データの並び順は決まっていません。

何万件ものデータの中から、特定の1件(たとえば「山田太郎さん」のデータ)を確実に見つけ出そうとしたとき、名前だけで探すのは危険です。

だって、同姓同名の人がいるかもしれませんよね。

そこで必要になるのが、そのデータを「世界でたった一つ」と識別するための「目印」。

これが主キーの正体です。

主キーを設定すると、テーブル内の各レコード(行)が絶対に重複しないことが保証されます。

これを専門用語で「一意性(ユニーク)の制約」と言います。

もし主キーがないと、同じデータが何個も登録されてしまったり、どれが最新のデータなのかわからなくなったりと、大混乱になってしまいます。

たとえば、売上管理システムで同じ受注番号が2つ存在したら…請求のときに大問題になりますよね。

また、主キーは他のテーブルと紐付ける(リレーションシップを設定する)ときの「つなぎ目」としても使われます。

複数のテーブルを組み合わせて使うのがAccessの強みなので、主キーは事実上、必須の設定なんです。

さらに、主キーには「空欄(Null)であってはいけない」という絶対的なルールもあります。

空っぽの目印では、データを特定できませんからね。

つまり、「重複NG」かつ「空欄NG」という2つの厳しい条件をクリアした項目だけが、主キーになれるわけです。

Excelだと「とりあえず入力してから、後で整理しよう」という使い方ができますが、Accessでは最初に「何でそのデータを見分けるか」をしっかり決めておく必要があります。

この厳しさが、Accessが大量のデータを正確に扱える理由であり、Excelとの大きな違いでもあります。

どれを選べばいい?「オートナンバー型」と「自然キー」の使い分け

主キーの大切さがわかったところで、次に悩むのが「じゃあ、どの項目を主キーにすればいいの?」という問題です。

主キーの選び方には、大きく2つのパターンがあります。

**①自然キー(ナチュラルキー)**
社員番号や商品コードなど、実際の業務ですでに使われている番号をそのまま主キーにする方法です。

**②人工キー(サロゲートキー)**
業務上の意味は持たせず、システムが自動的に1、2、3…と連番を振る方法。

Accessでは「オートナンバー型」として簡単に設定できます。

初心者の方には、断然「オートナンバー型」をおすすめします。

入力の手間が省けるし、重複の心配もゼロだからです。

自然キーには「番号ルールが変わる」というリスクがあります。

たとえば、社員番号を主キーにしていた場合、会社の合併で社員番号の桁数が変わったり、番号そのものが振り直しになったりすると、システム内のすべての関連データを修正しなければなりません。

これは本当に大変な作業です。

一方、オートナンバー型なら、あくまでシステム内部の管理番号なので、業務ルールが変わっても影響を受けません。

システムを安定して動かし続けられるんです。

もちろん、すでに会社全体で統一された番号体系があって、将来も変わる心配がない場合は、自然キーを使ってもOKです。

でも少しでも不安があるなら、迷わずオートナンバー型にしましょう。

テーブルを作るとき、とりあえず最初に「ID」という項目を作って、データ型を「オートナンバー型」にして鍵マーク(主キー)を付けておく。

これはプロのエンジニアもやっている定番の方法なんです。

番号が飛んでしまった!オートナンバー型の「欠番」について

オートナンバー型を使っていると、必ずといっていいほど起こるのが「番号が飛ぶ(欠番ができる)」という現象です。

たとえば、テストで3件データを入れてIDが1、2、3になった状態で、3番目を削除したとします。

その後に新しいデータを追加すると、IDは「3」ではなく「4」になります。

つまり、1、2、4…と飛び飛びになってしまうんです。

また、データ入力を途中でキャンセルした場合(Escキーを押したときなど)も、内部的に番号が進んでしまって欠番ができることがあります。

多くの初心者の方は、この「欠番」をすごく気にします。

「1からきれいに並んでないと気持ち悪い」「データの件数とIDの番号が合わないのはおかしい」と感じて、なんとか埋めようとしがちです。

でも、データベース運用の観点から言うと、**オートナンバー型の欠番は気にしなくて大丈夫。

むしろ無理に埋めてはいけません。

**

なぜなら、主キーの役割はあくまで「そのデータを区別すること」であって、「データの順番」や「登録件数」を表すものではないからです。

かつて「ID:3」だったデータが存在して、それが削除されたという事実がある以上、新しいデータに「ID:3」を再利用するのは、過去の記録との整合性を壊すリスクがあります。

もし、請求書番号や会員番号のように「絶対に欠番を出さず連番で管理したい」という業務上の要求がある場合は、オートナンバー型をそのまま使うのではなく、VBAやマクロで「現在の最大値+1」を計算して入力する独自の仕組みを作るのが正解です。

オートナンバー型はシステム管理用のIDと割り切って、ユーザーが見る管理番号とは分けて考える。

これがトラブルの少ない賢い使い方です。

とはいえ、システムの開発中やテスト段階では、一度データを全部消して、気持ちよく「1」から番号を振り直したいこともありますよね。

そんなときのリセット方法を、次で説明します。

【実践編】Accessのオートナンバーを「1」からリセットする方法

それでは実際に、オートナンバー型の連番をリセットする手順を説明します。

ここでは最も安全で一般的な「テーブル内のデータを全部削除して、IDを1から再スタートさせる方法」を紹介します。

開発中のテストデータをきれいにして、本番運用に向けて整えたいときなどに便利です。

**作業前の注意点**
念のため、データベースファイルのバックアップ(ファイルのコピー)を取っておきましょう。

操作を間違えて必要なデータを消してしまうと元に戻せないので、慎重に進めてください。

**リセットの手順**

1. **データを全部削除する**
リセットしたいテーブルを開いて、入っているデータを全部削除します(全選択してDelete)。

データが残っていると、1からのリセットはできません。

2. **データベースを最適化する**(ここがポイント!)
Accessのリボンメニューにある「データベースツール」タブをクリックして、「データベースの最適化/修復」ボタンを押します。

3. **確認する**
最適化処理が終わったら、もう一度テーブルを開いて新しいデータを入力してみてください。

IDが「1」から始まっていれば成功です。

この「データベースの最適化/修復」という機能は、ファイルサイズを小さくしてパフォーマンスを良くするためのものですが、同時に「空になったオートナンバー型のカウンターをリセットする」という働きもしてくれます。

とても簡単な方法ですが、注意点として、この方法は「テーブルを空っぽにする」ことが前提です。

「データは残したまま、欠番だけを詰めたい」とか「途中から番号を振り直したい」という場合は、もっと高度な方法(DDLという特殊なSQLコマンド)が必要になりますが、データの整合性を壊すリスクが高いので、基本的にはおすすめしません。

まずはこの「全削除&最適化」によるリセット方法を覚えておけば、開発段階での困りごとはほぼ解決できるはずです。

ぜひ試してみてください!

広告