Access FAQ

Accessにおけるテーブル結合の考え方

Accessでデータを扱っていると、
避けて通れないのが テーブル結合 です。

一方で、

  • 結合すると結果が増える
  • 思った件数にならない
  • どこで結合しているのか分からない

といった違和感を抱えたまま、
「動いているから良し」として使われているケースも少なくありません。

テーブル結合は、
単なるテクニックではなく、
データ設計の考え方そのものが表れる部分です。

この記事では、
Accessにおけるテーブル結合について
何をしている処理なのか、なぜ必要なのか、どう考えるべきかを、
設計視点で整理します。


テーブル結合とは何をしている処理なのか

テーブル結合は「データをくっつける」処理ではない

テーブル結合という言葉から、
「テーブル同士を物理的に結合している」
ようなイメージを持たれることがあります。

しかし、実際にはそうではありません。

テーブル結合とは、

  • 複数のテーブルを参照し
  • 条件に基づいて
  • 一時的な結果セットを作る

処理です。

元のテーブル構造が変わることはなく、
データが保存されるわけでもありません。


Accessが結合結果を作るタイミング

Accessでは、
テーブル結合の結果は クエリ実行時 に作られます。

つまり、

  • クエリを開いた時
  • フォームや帳票が表示された時

その都度、
結合条件に基づいて
一時的な結果が生成されています。

この「一時的」という点を理解していないと、
結合結果に対して
誤った期待をしてしまうことになります。


なぜテーブルを結合する必要があるのか

テーブルを分けて管理する理由

業務Accessでは、
データを正規化し、
意味ごとにテーブルを分けて管理します。

これは、

  • データの重複を防ぐ
  • 修正漏れをなくす
  • 整合性を保つ

ためです。

例えば、

  • 取引先
  • 担当者
  • 商品

を1つのテーブルにまとめると、
管理はすぐに破綻します。


分けたデータを「使う」ための仕組み

テーブルを分けると、
1つのテーブルだけでは
業務として意味を持たないデータになります。

そこで必要になるのが、
テーブル結合です。

  • マスタと明細
  • 親と子
  • コードと名称

これらを
必要な場面で組み合わせて使う
そのための仕組みが、
テーブル結合です。


テーブル結合とリレーションシップの関係

リレーションは「ルール」、結合は「処理」

リレーションシップとテーブル結合は、
混同されやすい概念です。

  • リレーションシップ:
     テーブル間の 関係性を定義するルール
  • テーブル結合:
     その関係を使って データを取り出す処理

という違いがあります。

リレーションは設計、
結合は実行時の処理、
という位置づけです。


リレーションがなくても結合できる理由

Accessでは、
リレーションシップを設定していなくても、
クエリ上で結合条件を指定すれば
テーブルを結合できます。

これは、

  • SQLとして成立している
  • 実行時に条件が評価されている

ためです。

ただし、
リレーションが定義されていない結合は、
設計としては不安定になりがちです。


Accessで使われる結合の基本パターン

内部結合(INNER JOIN)の考え方

内部結合は、

  • 両方のテーブルに
  • 結合条件が一致するデータ

だけを取得する結合です。

業務Accessでは、
最も多く使われる結合パターンです。

例えば、

  • 存在しないコードは表示しない
  • 対応関係があるデータだけ扱う

といった、
整合性重視の場面で使われます。


外部結合(LEFT JOIN)の考え方

外部結合(主に左外部結合)は、

  • 片側のテーブルを基準に
  • もう一方が存在しなくても表示する

結合です。

これは、

  • マスタは必ず表示したい
  • 明細がなくても一覧に出したい

といった場面で使われます。

「データがないこと」自体を
業務上の意味として扱うための結合です。


テーブル結合で起きやすい誤解とトラブル

結合条件が曖昧なまま使ってしまう

結合条件が不十分だと、

  • 件数が想定より増える
  • 同じデータが重複して見える

といった現象が起きます。

これは、
Accessの不具合ではなく、
結合条件が論理的に不足している
ことが原因です。


結合が増えすぎて処理が重くなる

結合するテーブルが増えるほど、

  • クエリは複雑になる
  • 処理負荷は高くなる

という傾向があります。

「とりあえず結合する」
という設計を続けると、
パフォーマンス問題として表面化します。


テーブル結合は「設計の結果」である

正しい結合は正しい設計から生まれる

テーブル結合は、
テーブル設計の結果です。

  • 主キー
  • 外部キー
  • データの意味づけ

が整理されていれば、
結合は自然で分かりやすくなります。

逆に、
結合が分かりにくい場合は、
設計そのものを見直す必要があります。


結合で無理をしている時のサイン

次のような状態は、
結合で無理をしているサインです。

  • VBAで結果を補正している
  • 結合後に大量の条件分岐がある
  • 表示結果をごまかしている

こうした対応は、
設計の歪みを後処理で隠している
状態と言えます。


実務での結合設計の判断基準

結合すべき場面・避けるべき場面

結合は、

  • 一覧表示
  • 帳票出力
  • 集計処理

といった場面で効果的です。

一方、

  • 入力処理が複雑になる
  • 同時編集が多い

画面では、
結合を最小限に抑えた方が
安定することもあります。


将来の拡張・移行を見据えた考え方

Accessから、

  • 分割構成
  • SQL Server連携

へ移行する場合も、
テーブル結合の考え方は変わりません。

むしろ、
Accessで正しく結合を理解しているか
が、移行時の難易度を大きく左右します。


まとめ|テーブル結合は「技術」ではなく「考え方」

テーブル結合は、

  • 便利な機能
  • SQLのテクニック

ではありません。

データをどう分け、どう使うか
という設計思想の延長線にある処理です。

結合結果に違和感がある場合、
疑うべきはAccessではなく、
設計と考え方です。

テーブル結合を
「なんとなく使う」から
「説明できる形で使う」へ。

システムキューブの「Accessの移行変換、mdb・adpのバージョンアップ」について

システム開発・ホームページ制作会社|株式会社システムキューブ