マスタテーブルとトランザクションテーブルの見分けられるようになろう

前回、お小遣い帳テーブルや商品テーブルなどいくつかのテーブルを設計しました。 これらのテーブルは、実際の現場では、データベースを設計する際、マスタテーブルトランザクションテーブルの2つのグループに分けて考えます。

もしこの分類が曖昧だと、後々、プログラミング工程で様々な問題に直面することになります。 今回はマスタテーブルとトランザクションテーブルの役割を正しく理解し、データベース設計をする上での基本的な知識を習得しましょう。

マスタテーブルの概要

実際の現場では、マスタテーブルに分類されるテーブルを「○○マスタ」と呼ぶことが多いです。この言葉は現場で頻繁に耳にするでしょう。たとえば、商品情報を管理する商品テーブルは、通常「商品マスタ」や「商品マスタデータ」などと呼ばれます。よく覚えておきましょう。

トランザクションテーブルの概要

一方、トランザクションテーブルは、マスタテーブルに対する用語ですが、現場では「マスタ以外のテーブル」という感覚で使われます。なので実際の現場ではトランザクションテーブルという言い方をしないかもしれません。ただし、トランザクションテーブルで管理されるデータはシステムの中心的な役割を果たすことが多いです。


1. マスタテーブルとは

マスタテーブルに該当するテーブルは基本データを扱います。 基本データは更新頻度の低いデータであることが特徴です。 例えば、商品データや顧客データが基本データの代表例です。商品データでは「商品ID」「商品名」「価格」などの情報が管理され、顧客データでは「顧客ID」「顧客名」「住所」などが登録されます。 これらのデータは日々の業務で頻繁に変更されることは少ないです。(全く変更がないわけではありません。)

定義

マスタテーブルは、システムで利用される固定的なデータや参照用のデータを格納するテーブルです。これらのデータは比較的変更頻度が低く、システム全体で共有されます。

特徴

以下は「商品マスタ」の例です:

商品ID 商品名 価格 カテゴリ
1 りんご 100 果物
2 バナナ 150 果物

2. トランザクションテーブルとは

トランザクションテーブルは更新頻度の高いデータを扱います。 例えば、売上データやチャットデータがトランザクションテーブルの典型例です。売上データでは「売上ID」「商品ID」「数量」「金額」「売上日」などが記録され、日々の取引が追加され続けます。 一方、チャットデータでは「メッセージID」「送信者ID」「受信者ID」「送信日時」「内容」などが格納され、リアルタイムで頻繁に更新や追加が行われます。このように、トランザクションテーブルは日常的な業務やユーザーの活動によって大量のデータが継続的に生成される特徴があります。

トランザクションテーブルはシステムの動的な部分を支える中核的な存在であり、設計・運用・開発のすべての段階で頻繁に関わることになるでしょう。

定義

トランザクションテーブルは、日々の業務で発生する処理データを格納するテーブルです。これらのデータは頻繁に追加・更新されます。

特徴

以下は「注文テーブル」の例です:

注文ID 商品ID 数量 注文日
1001 1 5 2025-01-20
1002 2 3 2025-01-21

3. まとめ

以下のポイントを確認することで、マスタテーブルとトランザクションテーブルを見分けることができます。

見分けるための質問

  1. データの性質は静的か動的か?
  1. データの変更頻度はどれくらいか?
  1. データは他のテーブルから参照されるか、もしくは参照する側か?

判断基準のまとめ

質問 マスタテーブル トランザクションテーブル
データの性質 静的 動的
変更頻度 低い 高い
他テーブルとの関係性 参照されることが多い 参照することが多い

4. 例題:テーブルを分類してみよう

以下のテーブルを見て、それぞれがマスタテーブルかトランザクションテーブルかを判断してください。

例1: 顧客テーブル

顧客ID 顧客名 メールアドレス 住所
1 山田 太郎 yamada@example.com 東京都新宿区
2 田中 花子 tanaka@example.com 大阪府大阪市

例2: 売上テーブル

売上ID 顧客ID 商品ID 金額 売上日
5001 1 2 450 2025-01-22
5002 2 1 500 2025-01-23

5. 練習問題

  1. 以下は求人システムにおいてよく見られるテーブルです。これらのテーブルの構造をイメージしながら、マスタテーブルかトランザクションテーブルかを判断してください。 なお、絶対これだ!という答えではありません。要件の説明次第で答えは変わりますので、なぜそのように判断したか理由も説明してください。

6. おわりに...

今回はマスタテーブルとトランザクションテーブルを正しく区別するだけ?と思うかもしれません。 しかし、データベースを設計していく上で非常に大切な知識です。今後のシステム開発をしていく上で常に頭に入れておかねばならない基本概念だからです。