PR

Excelデータベースの正規化とは?表/テーブルの分割手順と実務解説

Thumbnail for Excelデータベースの正規化とは?表/テーブルの分割手順と実務解説
  • 「Excelテーブルでデータ管理しているが、重複が多くて修正するときが大変…」
  • 「Excelでリレーショナルデータベースを再現したいが、テーブル設計の考え方がわからない…」
  • 「表をマスタとトランザクションに分割する方法が知りたい…」

このような問題は、 テーブルの正規化で解消 できます。Excelで効率的にデータを管理するには、1つの表にすべてを詰め込むのではなく、役割ごとにテーブルを分割する「正規化」が有効です。

本記事では、Excelにおけるテーブル正規化の手順と、実務で使えるテーブル設計の考え方を解説します。

「Excelデータベース」と「RDB」の違い

Excelで「データベース」というと、テーブル化した1つの表を指すことが多いです。一方、MySQL・Access・PostgreSQLなどの専用のデータベース管理システム(DBMS)では、複数のテーブルに分割して管理するリレーショナルデータベース(RDB)が標準的です。Excelでも疑似的にRDBを再現できますが、そのためにはテーブルの正規化(分割)が前提となります。

Excelによるデータベースの基本については、下記の記事をご覧ください。

» Excelでデータベースの作成方法|データ管理の基本ルールから限界まで解説

目次

理由|テーブル分割・正規化しなかった場合の問題点

テーブルを分割せずに1つの表に情報を詰め込み続けると、次のような問題が発生します。

 

重複データの発生

同じ顧客が複数回購入するたびに、「顧客名」「顧客住所」などの文字列が全行に重複して入力されます。 データ量が増えるほど、ファイルサイズが肥大化 します。

重複データの発生
 

更新時異状(アノマリー)

データを追加・修正・削除するたびに、意図しない不具合が起きます。この問題を 「更新時異状(アノマリー)と呼びます

異状の種類具体的な問題
修正異状顧客の住所変更に伴い、その顧客が登場するすべての行を書き換える必要がある修正漏れが起きると、データに不整合が生じる。
挿入異状売上が発生していない段階では、新規顧客や新規商品の情報を単独で登録できない 設計上の制約がある。
削除異状特定の売上レコードを削除すると、そのレコードにしか存在しなかった顧客・商品の情報まで同時に消える
更新時異状

Before/After|分割(正規化)前後のテーブル構造

分割前後のテーブル構造
 

分割(正規化)

取引履歴(イベント情報)と顧客・商品情報(属性情報)が、すべて1つのシートに混在しています。

分割前のテーブル構造

「株式会社A」「東京都...」が2行に重複しています。 顧客数・購買回数が増えるほど、重複行は際限なく増えていきます

 

正規化後(リレーショナル状態)

「イベント(売上の事実)を記録するトランザクションテーブルと、「属性(顧客や商品の情報)を管理するマスタテーブルに分離します。各テーブルはID列(キー)で関連付けます。

正規化後のテーブル構造

「株式会社A」の住所を変更する場合、M_顧客テーブルの 1か所を修正するだけで完了 します。

吉峰
吉峰

T_売上(トランザクション)に「連番」が追加され、「顧客住所」「単価」が残っているのは、正規化による処理ではなく、実務上の利便性のためです(後述

2種類のテーブル:マスタとトランザクション

データベース設計では、「イベント(売上・入出庫など)と「属性(顧客情報・商品情報など)を別々のテーブルで管理します。

マスタとトランザクションの例
格納データテーブルの種類テーブル名のプレフィックス(接頭語)
属性マスタ(ディメンション)M_(Master)商品リスト、顧客台帳、名簿
イベントトランザクション(ファクト)T_(Transaction / Table)売上明細、入出庫履歴、ログデータ

テーブルの種類の通称はさまざま

テーブルの呼び方は文脈によって異なります。整理しておきます。

  • テーブル設計での呼び方:「マスタ」と「トランザクション」
  • Power Pivot(データモデル)での呼び方:「ディメンション」と「ファクト」
  • Excelでのプレフィックス(接頭語)M_(Master)T_(Transaction / Table)
    • T_ は "Transaction" ではなく "Table" を指し、マスタテーブル以外のテーブルに付けることが一般的です。

テーブル名の設定方法など、Excelテーブルの基本操作については、下記の記事をご覧ください。

» Excelテーブルの基本と活用法|通常の表との違い・できることを徹底解説

テーブル設計|Excelデータベースの分割(正規化)の手順と考え方

正規化は、データの重複(冗長性)を減らし、テーブルを整理・分割して「IDが決まると詳細情報が一意に決まる関係」にするプロセスです。ここでは、第1正規化から第3正規化までの手順と、実務的なテーブルの分割手順を解説します。

  • ステップ1:「1セル1値」「1行1データ」の徹底(第1正規化
  • ステップ2:マスタとトランザクションの分離(第2・第3正規化
    • 注意点:第2・第3正規化はあえて止める(スタースキーマの適用
  • ステップ3:単一主キー列の追加(複合キーの場合)
  • ステップ4:重要な記録はトランザクションテーブルに保持
 

ステップ1:「1セル1値」「1行1データ」の徹底(第1正規化)

正規化の最初は、まず第1正規化によって表の各セルを最小単位(アトミックな状態)に整理します。

第1正規形の定義

1つのセルに1つの値のみを格納し、繰り返し項目(列)やセルの結合を完全に排除した状態(アトミックな状態)1レコード(行)に同一の項目(列)を並べることも禁止。

テーブルの第1正規化の例

以下のような入力は、第1正規形に違反します。

  • 1つのセルにカンマやセル内改行で複数の値を記入している
  • セルを結合して複数のセルに1つの値を表示している
  • 「1月売上」「2月売上」「3月売上」のように、同一項目を複数列に並べている(クロス集計表)
 

ステップ2:マスタとトランザクションの分離(第2・第3正規化)

第2・第3正規化は、「商品」や「顧客」といったエンティティ(実体)ごとにデータを分離する手順です。切り出したデータはマスタテーブルとしてまとめ、外部キーで結合できるようにします。

テーブルの第2・第3正規化(スタースキーマ)の例
キー(決定項目)キーに直接従属する属性分離先テーブル
商品ID商品名、単価M_商品
顧客ID顧客名、顧客住所M_顧客
受注番号受注日、顧客ID、商品ID、数量T_売上
吉峰
吉峰

理論上は第4正規形・第5正規形なども存在しますが、実際には第3正規形まで対応すれば十分なケースがほとんどです。

 

注意点:第2・第3正規化はあえて止める(スタースキーマの適用)

Excelでは正規化を進めすぎると、管理が複雑になり、パフォーマンスも低下します。基本方針として「スタースキーマを採用し、テーブルの分割を必要最小限に留めます。

スタースキーマの構造

スタースキーマとは、「ファクトテーブル(トランザクション)を中心に置き、その周囲を「ディメンションテーブル(マスタ)が囲む構造。テーブルの 親子関係は1階層のみ とし、マスタからさらにマスタを分離する多段構造は持たない。

スタースキーマのイメージ
テーブルの形特徴デメリット
スノーフレークスキーマ(第3正規形まで分解)データの重複が一切なく、整理されている。使用する際に大量のテーブルを結合(JOIN)しなければならず、 処理速度が低下し、保守性にも影響が出る
スタースキーマ(正規化を一部緩めた構造)テーブルの数が少なく、構造がシンプル。同じデータが何度も重複して保存されるため、容量を消費する。
スタースキーマとスノーフレークスキーマの構造の例

業務システム向け(受発注・顧客管理など)の専用のDBMSでは第3正規化まで完全に進めることが多いですが、Excelではテーブルの階層が深くなりすぎると、管理と結合の処理負荷が過剰になります。

基本的には、下記を方針として考えれば良いでしょう。

  • マスタとトランザクションに分離する
  • マスタからさらにマスタを分離するのは、特定の条件に該当する場合のみ(後述とする。

参考:第2・第3正規化とは

第2・第3正規化を完全に進めると、テーブルは「1対1」「1対多」の関係になるまで分割されます。このように、第2・第3正規化によって分解可能な範囲まで正規化した構造は、一般的に スノーフレークスキーマ と呼ばれています。

第2・第3正規化を行った形(正規形)の理論的な定義は以下の通りです。

第2正規形の定義

複合主キーの一部のキーにしか依存しない属性を、別テーブルに分離した状態(部分関数従属の排除)
部分関数従属 とは、主キーが2つ以上の列(複合キー)でできているとき、その「一部のキー」だけでデータが決まる関係のこと。

第2正規形の例

第3正規形の定義

主キー以外の列に依存する属性を、別テーブルに分離した状態(推移的関数従属の排除)
推移的関数従属 とは、「主キー以外の列」が決まるとデータが決まる関係のこと。たとえば「商品ID」が決まると「カテゴリコード」が決まり、「カテゴリコード」が決まると「カテゴリ名」が決まる関係が該当する。

第3正規形の例

実務ではエンティティを意識すると早い

第3正規化の理論(推移的関数従属の有無)を確認するとき、「カテゴリID」のような列が既存テーブルに存在しない場合があります。その場合、「推移的関数従属がないから分割不要」と判断することもできます。ただし、エンティティ(実体)を意識すると「IDを設定して分割すべき」と判断できます。理論的な確認は正規化後の検証に使う程度にとどめ、エンティティを特定して切り出す方が実務では速く正確です。

吉峰
吉峰

そもそも「カテゴリID」を設定した時点で、「カテゴリ」というエンティティを認識しているので、そのときに既にマスタとして切り出す意識があったはずです。先に切り出し、あとから理論で確認すれば大丈夫です。

第2階層以降のテーブルに切り出すときの判断基準

Excelデータベースでは原則としてスタースキーマを維持します。ただし、以下の条件に当てはまる場合は、マスタのさらなる分離を検討します。

  • データ量が膨大で、重複によるサイズ増大が問題になる場合:大量の行を持つトランザクションテーブルに、選択肢の少ない属性(長い文字列など)が全行で重複しているケース。
重複するデータ量が膨大
  • 粒度が異なるデータが混在する場合:トランザクションテーブルに「日単位の列」と「月単位の列」が混在しているケース(1対多の関係が崩れている場合)
粒度が異なる(1対多など)データを扱う場合

TIP:重複が多い場合に見やすくする設定(セル結合の代替)

条件付き書式で「上の値と同じなら非表示」に設定すると、セル結合をせずに見た目をすっきりさせることができます。

【設定例】

  • 数式=B3=B2B3が開始セルの場合)
  • 書式フォントの色を薄い灰色
  • 適用先 : ``
 

ステップ3:単一主キー列の追加(複合キーの場合)

テーブルの主キーが 複合キー (行を一意に識別するときに複数列の値を使う構造)になっている場合は、単一の主キー列 を追加することを推奨します。論理上は複合キーでも問題はありませんが、単一の主キー列を用意することで参照や並び替えの操作が簡単になります。

単一主キーの追加例

単一主キーの作成方法としては、次の2パターンが挙げられます。

  • 連番を設定する(推奨)
  • 複合キーの値を結合して生成する
吉峰
吉峰

マスタテーブルには、テーブル分割の時点で外部キーとして主キーが設定されているはずですが、存在しない場合にも主キー列を追加したほうが良いでしょう。

主キーを設定するメリットを整理すると下記の通りです。

  • 1行の抽出・参照が簡単になる
  • 並び替え後に元の順序に戻せる
  • 同一名称(同姓同名など)でもレコードを区別できる
 

ステップ4:重要な記録はトランザクションテーブルに保持

重要な「取引時点の記録」となる項目は、マスタの項目と重複する内容であっても、トランザクションテーブルに残しておきます。

重要な記録項目としては、以下があります。

  • 金額
  • 配達先住所
    • ※ 取引後も、納品対応・再発送・返品処理・問い合わせ対応などで参照される可能性がある
重要な記録をトランザクションに保持する例

テーブル間で発生する重複データの扱い方は、テーブルごとに次のように整理できます。

  • トランザクションテーブル:取引時点の記録(スナップショット)を保持する
  • マスタテーブル:常に最新の正しい状態のみを保持する

結合方法|分割したExcelテーブルのリレーション

テーブル間の関連付けのイメージ

RDBでは、分割したテーブルをキー列(ID列)を介して結合・連携してデータを取得します。Excelでも、以下の3つの方法でテーブル同士を関連付けて結合できます。

方法用途特徴
XLOOKUP / VLOOKUP / INDEX+MATCH 関数単一の値を参照する場合リアルタイムで更新される。数式が多いとファイルが重くなりやすい。
Power Query マージ2つのテーブルを結合する場合大量データの結合に向く。更新は手動または自動設定が必要。
Power Pivot リレーションシップ複数テーブルを結合する場合大量データを高速に処理できる。ピボットテーブルでの集計に向く。

詳細:» Excelでリレーショナルデータベース(RDB)を作る【テーブル間を関連付け】

Excelの限界|専用データベースへの移行目安

Excelは表計算ソフトであり、本格的なデータベース管理システム(DBMS)の代替にはなりません。Excelによるデータ管理では、以下の限界があります。

  • 容量と速度の限界 :データ量が増えると動作が極端に重くなり、強制終了のリスクが高まる。シートには104万行の上限があり、ビッグデータの格納には向かない。
  • 同時編集が困難複数人による同時更新には特化しておらずデータの消失や不整合の発生リスクがある。
  • 参照整合性の欠陥 :一方のテーブルを修正しても、関連する他方のテーブルは自動更新されない。矛盾が生じたままになるリスクがある。
  • 人的ミスの発生 :セル値の誤消去や、不適切なデータ型の入力を防ぐ仕組みが弱い。
  • セキュリティの脆弱性 :ファイル全体の流出リスクが常に存在する。

詳細:» Excelデータベースの限界|専用システムとの違いを比較【ビッグデータに対応】

以下の状況に当てはまる場合は、DBMSへの移行を検討してください。Excelの限界を超えて、本格的なデータベース運用を行いたい場合は、専用のシステムDBMSを検討する必要があります。検討タイミングの目安は以下の通りです。

  • ファイルを開く操作や計算処理に数分以上かかる。
  • 「誰かがファイルを開いていて更新できない」という状況が頻繁に起きている。
  • 参照数式が複雑化しており、メンテナンスが困難になっている。
  • データの不整合を修正する作業に、膨大な時間を費やしている。

まとめ|適切なテーブル設計でデータ管理を効率化

本記事では、Excelでデータ管理をするときのテーブル分割の考え方について解説しました。要点は以下の通りです。

  • テーブル分割のメリット : データの重複による容量肥大化と、修正・挿入・削除時のデータ不整合(アノマリー)を防ぐ。
  • Excelテーブルの設計方針 : 第1~3正規化によりテーブルをマスタとトランザクションに分離するが、「スタースキーマ」を採用してテーブル階層を深くしない。
    • 第1正規化 : 1セルに1値のみを格納し、セルの結合や繰り返し列を完全に排除する。
    • 第2・第3正規化 : 主キーや他の項目に依存する属性(商品名や顧客住所など)を別テーブルに分離する。

Excelデータベースの注意点・限界や、本格的なデータベースへの移行ステップについては、下記の記事にまとめています。

» Excelでデータベースの作成方法|データ管理の基本ルールから限界まで解説