マスタとトランザクションの違いと正規化の考え方:新人エンジニア向けやさしい解説

こんにちは。ゆうせいです。

データベース設計に関わると、避けて通れないのが「正規化(せいきか)」。
「マスタは正規化すべき、トランザクションはしなくてもいい」
こんな話を聞いたことがあるかもしれませんね。

今回はこの考え方が本当に正しいのか?、なぜそう言われるのかを、やさしく丁寧に解説していきます!


正規化ってなんだろう?

データをきれいに保つためのルール

正規化とは、データの重複や不整合を防ぐために、表(テーブル)の構造を整えることです。

たとえば、以下のようなテーブルがあったとします:

顧客ID顧客名顧客住所
001佐藤太郎東京都渋谷区
002鈴木花子大阪市北区
001佐藤太郎東京都渋谷区

このように、同じ顧客情報が複数行に登場していると、
「住所を変更したいとき、全部書き換えないといけない」=ミスのもとです。

だからこそ、「顧客」という情報は1か所にまとめて管理しよう!というのが正規化の基本的な考え方です。


マスタとトランザクションの違いをおさえよう

それぞれの役割をまず確認!

種類内容
マスタ(Master)変わりにくい基準データ商品情報、顧客情報、社員一覧など
トランザクション(Transaction)日々発生する処理や記録売上履歴、注文履歴、ログイン履歴など

マスタは「同じ情報を何度も使う」前提のデータ。
一方、トランザクションは「そのときの記録を残す」ことが重要です。


本題:「トランザクションは正規化しなくてもよい」は本当か?

結論:厳密には “必要性が低いことがある” というだけ

マスタの正規化はほぼ必須です。
一方、トランザクションは正規化をしすぎると逆に困ることがあります。

なぜトランザクションの正規化は控えめなのか?

理由を見ていきましょう。


理由①:履歴は「当時の情報」が大事

たとえば、売上テーブルに「商品名」を入れるのは正規化違反ですが…

注文ID | 商品ID | 商品名     | 単価
-------|--------|------------|-----
1001   | A001   | りんご     | 120
1002   | A001   | りんご     | 120

「商品名を別テーブルにしてJOINしよう!」と正規化するのが正しい…と思いきや、
もし商品名が「青森りんご」に変更されたらどうでしょう?

JOINしたとき、過去の注文まで「青森りんご」になってしまいます

履歴が改ざんされる危険性がある

トランザクションでは、過去の記録をそのまま残すことが大切なので、あえて非正規化(情報を埋め込む)することがあるのです。


理由②:JOINが増えるとパフォーマンスが落ちる

正規化を突き詰めると、テーブルが細かく分かれます。
つまり、処理のたびに何度もテーブルをJOIN(結合)しなければなりません。

とくにトランザクションは大量のレコードが発生するので、
毎回JOINするのは大きな負荷になります。

だからこそ、多少の重複は許容して、読み取り速度を優先することもあるのです。


図で比較してみよう:正規化の有無とその影響

正規化された形(マスタと紐づけ)

売上テーブル
注文ID | 商品ID | 数量
-------|--------|-----
1001   | A001   | 2

商品マスタ
商品ID | 商品名 | 単価
-------|--------|-----
A001   | りんご | 120

→ JOINしないと商品名がわからない


非正規化された形(商品名や単価も持たせる)

注文ID | 商品ID | 商品名 | 単価 | 数量
-------|--------|--------|------|-----
1001   | A001   | りんご | 120  | 2

→ 単体で読めるが、商品名が重複して保存される


まとめ:目的に応じて使い分けよう!

項目マスタトランザクション
正規化強く推奨状況による
理由一元管理、整合性パフォーマンス、履歴保持
JOIN前提にしてOK多用しすぎ注意

今後の学習のヒント

この話をもっと深く学ぶために、以下のテーマに進むのがおすすめです。

  • 第1〜第3正規形の具体例と仕組み
  • 非正規化と正規化のトレードオフ
  • データウェアハウスでの正規化と非正規化の考え方
  • データベース設計の実践パターン(OLTPとOLAP)

最初は「正規化=正しい」と思いがちですが、実際には“設計目的に応じてバランスをとる”のが本質です。

判断力を磨いて、より良いDB設計を目指しましょう!またね。

セイ・コンサルティング・グループの新人エンジニア研修のメニューへのリンク

投稿者プロフィール

山崎講師
山崎講師代表取締役
セイ・コンサルティング・グループ株式会社代表取締役。
岐阜県出身。
2000年創業、2004年会社設立。
IT企業向け人材育成研修歴業界歴20年以上。
すべての無駄を省いた費用対効果の高い「筋肉質」な研修を提供します!
この記事に間違い等ありましたらぜひお知らせください。