前回、お小遣い帳テーブルや商品テーブルなどいくつかのテーブルを設計しました。
これらのテーブルは、実際の現場では、データベースを設計する際、マスタテーブルとトランザクションテーブルの2つのグループに分けて考えます。
もしこの分類が曖昧だと、後々、プログラミング工程で様々な問題に直面することになります。
今回はマスタテーブルとトランザクションテーブルの役割を正しく理解し、データベース設計をする上での基本的な知識を習得しましょう。
実際の現場では、マスタテーブルに分類されるテーブルを「○○マスタ」と呼ぶことが多いです。この言葉は現場で頻繁に耳にするでしょう。たとえば、商品情報を管理する商品テーブルは、通常「商品マスタ」や「商品マスタデータ」などと呼ばれます。よく覚えておきましょう。
一方、トランザクションテーブルは、マスタテーブルに対する用語ですが、現場では「マスタ以外のテーブル」という感覚で使われます。なので実際の現場ではトランザクションテーブルという言い方をしないかもしれません。ただし、トランザクションテーブルで管理されるデータはシステムの中心的な役割を果たすことが多いです。
マスタテーブルに該当するテーブルは基本データを扱います。 基本データは更新頻度の低いデータであることが特徴です。 例えば、商品データや顧客データが基本データの代表例です。商品データでは「商品ID」「商品名」「価格」などの情報が管理され、顧客データでは「顧客ID」「顧客名」「住所」などが登録されます。 これらのデータは日々の業務で頻繁に変更されることは少ないです。(全く変更がないわけではありません。)
マスタテーブルは、システムで利用される固定的なデータや参照用のデータを格納するテーブルです。これらのデータは比較的変更頻度が低く、システム全体で共有されます。
以下は「商品マスタ」の例です:
商品ID | 商品名 | 価格 | カテゴリ |
---|---|---|---|
1 | りんご | 100 | 果物 |
2 | バナナ | 150 | 果物 |
トランザクションテーブルは更新頻度の高いデータを扱います。 例えば、売上データやチャットデータがトランザクションテーブルの典型例です。売上データでは「売上ID」「商品ID」「数量」「金額」「売上日」などが記録され、日々の取引が追加され続けます。 一方、チャットデータでは「メッセージID」「送信者ID」「受信者ID」「送信日時」「内容」などが格納され、リアルタイムで頻繁に更新や追加が行われます。このように、トランザクションテーブルは日常的な業務やユーザーの活動によって大量のデータが継続的に生成される特徴があります。
トランザクションテーブルはシステムの動的な部分を支える中核的な存在であり、設計・運用・開発のすべての段階で頻繁に関わることになるでしょう。
トランザクションテーブルは、日々の業務で発生する処理データを格納するテーブルです。これらのデータは頻繁に追加・更新されます。
以下は「注文テーブル」の例です:
注文ID | 商品ID | 数量 | 注文日 |
---|---|---|---|
1001 | 1 | 5 | 2025-01-20 |
1002 | 2 | 3 | 2025-01-21 |
以下のポイントを確認することで、マスタテーブルとトランザクションテーブルを見分けることができます。
参照される側であればマスタテーブル。
参照する側であればトランザクションテーブル。
※ 詳細は次回、解説します!
質問 | マスタテーブル | トランザクションテーブル |
---|---|---|
データの性質 | 静的 | 動的 |
変更頻度 | 低い | 高い |
他テーブルとの関係性 | 参照されることが多い | 参照することが多い |
以下のテーブルを見て、それぞれがマスタテーブルかトランザクションテーブルかを判断してください。
顧客ID | 顧客名 | メールアドレス | 住所 |
---|---|---|---|
1 | 山田 太郎 | yamada@example.com | 東京都新宿区 |
2 | 田中 花子 | tanaka@example.com | 大阪府大阪市 |
売上ID | 顧客ID | 商品ID | 金額 | 売上日 |
---|---|---|---|---|
5001 | 1 | 2 | 450 | 2025-01-22 |
5002 | 2 | 1 | 500 | 2025-01-23 |
今回はマスタテーブルとトランザクションテーブルを正しく区別するだけ?と思うかもしれません。 しかし、データベースを設計していく上で非常に大切な知識です。今後のシステム開発をしていく上で常に頭に入れておかねばならない基本概念だからです。