📖 テーマ設定
🔊 音声設定
1.2
1.0
1.0
▶️ 再生コントロール
🎵 BGM設定
0.3
🔔 効果音設定
0.3

RDB正規化とIAの違い考察

概要

  • 日程: Day 3 / セッション 07
  • 時間: [13:30-14:00]
  • 形式: 演習
  • ゴール: RDB正規化と情報アーキテクチャの整理分類の違いを4観点以上で表に整理でき、目的の違い(重複排除 vs ペルソナへの価値提供)を1分で説明できる
  • 学習形式: AIディスカッション

導入(5分)

前のセッションで「RDBは表形式で整然とデータを持つ」と学びました。実はRDBの世界には「正規化(Normalization)」という、データを綺麗に整理する手法があります。これ、Day 1で学んだ「IAの整理・分類」と似てる気がしませんか?

似ているけど、目的が違う。今日はその違いを表で整理して、Day 1とDay 3を頭の中で繋げます。

「正規化」と「整理分類」、どちらも「データを綺麗にする」活動ですが、誰のために、何のためにやるかが違います。

本編(20分)

1. RDB正規化とは

正規化は「データの重複と矛盾を防ぐためにテーブルを分割していく手法」です。1970年代、E.F.コッドが第1〜3正規形を定義し、後にBC正規形、第4・5正規形まで拡張されました。実務では「第3正規形(3NF)まで」が一般的です。

非正規形の例

注文ID 顧客名 顧客住所 商品1 単価1 商品2 単価2
1 田中 東京 鉛筆 100 消しゴム 50
2 田中 東京 ノート 200 NULL NULL

問題点:

  • 田中の住所が複数行に重複(更新漏れリスク)
  • 商品が増えると列が増える
  • NULL列が発生する

第3正規形まで分割した例

flowchart LR O["orders
注文ID, 顧客ID"] --> C["customers
顧客ID, 顧客名, 顧客住所"] O --> OI["order_items
注文ID, 商品ID, 数量"] OI --> P["products
商品ID, 商品名, 単価"]
正規形 やること
第1正規形(1NF) 繰り返し列をなくし、1セル1値にする
第2正規形(2NF) 主キーの一部にだけ依存する列を別表に切り出す
第3正規形(3NF) 非キー列に依存する列を別表に切り出す

ここがポイント

正規化の目的はシンプル:「同じ事実を1か所にだけ持つ」こと。これで更新の整合性が保たれます。

2. IAの整理分類とは(Day 1の復習)

Day 1で学んだIAの整理・分類は、「ペルソナにとって価値ある情報を見つけやすく届ける」ことが目的でした。

  • 整理: 不要なものを捨てる
  • 分類: ペルソナの探し方に合わせてカテゴリ分け(LATCH法)
  • カードソーティング: 利用者の視点でグルーピング

例: レシピアプリで「肉料理」「魚料理」「野菜料理」と分類するか、「平日5分」「週末ごちそう」と分類するかは、ペルソナによって変わる。

3. 違いを表で整理

観点 RDB正規化 IAの整理分類
目的 データの重複と矛盾を防ぐ ペルソナに価値ある情報を届ける
主役 データ(マシン) 利用者(ヒト)
評価軸 更新時の整合性 探しやすさ・分かりやすさ
手法 関数従属性の分析、分割 LATCH法、カードソーティング
出力 テーブル構造(ER図) 情報構造(情報定義書、サイトマップ)
制約条件 スキーマ、主キー、外部キー ペルソナの認知、UI制約
何が正解か 数学的に決まる 利用者の反応で決まる
変更タイミング 業務ルール変更時 ペルソナや市場変化時

ここがポイント

両者は「同じデータを違う視点で整理した結果」とも言えます。RDBは「マシンが扱いやすい整理」、IAは「ヒトが理解しやすい整理」です。

4. 両立させる方法

実は、RDB正規化とIAの整理分類は、片方を選ぶものではありません。両方を別の場所でやります。

flowchart TD P["ペルソナ"] --> IA["IA: ヒトの視点で整理分類"] IA --> UI["UI / 画面構造"] UI --> API["API / アプリケーション"] API --> ORM["ORM / SQL"] ORM --> RDB["RDB: マシンの視点で正規化"]
  • データ層(DB近く): 正規化したテーブル
  • プレゼンテーション層(画面近く): 利用者目線の情報整理(カテゴリ・タグ等)
  • 中間のロジック層がその橋渡しをする

コラム

コッド博士の論文(1970)は、当時のIBMの幹部から「役に立たない」と冷遇されました。実用化されたのは10年以上後の1980年代、Oracle社のラリー・エリソンらによってです。エリソンは論文を読んで「これはビジネスになる」と直感し、IBMより先に商用RDBMSを作り上げました。同じ論文を読んでも、見える未来は人によって違うのです。

コラム

日本の有名なIA実践家、長谷川敦士さんは「情報アーキテクチャはデータベース設計とは別物だが、両方を行き来できるエンジニアが最強」と述べています。データの構造を、マシン視点とヒト視点の両方で語れる人材が、これからの開発現場で重宝されます。

💬 AIに聞いてみよう

ここまでの内容で疑問があれば、AIに質問してみましょう。たとえば:

  • 「正規化を進めすぎると検索パフォーマンスが落ちると聞いた。なぜ?」
  • 「非正規化(あえて正規化を崩す)が必要な場面の例を教えて」
  • 「IAの分類とRDBの正規化を、ECサイトの商品データで対比して」

演習(5分)

課題

自チームの開発テーマで、以下の2つを書き出してください。

  1. RDB正規化視点での整理: 主な情報モデル3つを、3NFを目指してテーブル分割するメモ
  2. IA視点での整理: 同じ情報モデルを、ペルソナの視点でどんなカテゴリやタグで見せるか

その後、AIに「この2つの整理は両立できるか?」を相談。

成果物

  • 上記2つの整理メモ
  • AIからのフィードバックを踏まえた気づき1行

ヒント

  • DB設計とUI設計の「カテゴリ名がズレる」のは自然なこと(例: DBは「product_category」、UIは「平日ごちそう」)
  • 一致させようとすると、どちらかが不自然になる

まとめ(5分)

RDB正規化は「マシンのため」、IAの整理分類は「ヒトのため」の整理。両方をやる必要があり、それぞれ別の層で実現します。Day 1で学んだIAの考え方は、データベース設計とは違う、独立した価値を持っています。

次のセッションでは、画面(UI)とロジック(API)をつなぐ「通信」の話に入ります。RDBに溜めたデータを、どうやってUIに届けるかの仕組みです。

🔄 振り返りチェック

  • RDB正規化とIA整理分類の違いを、4つ以上の観点で挙げられますか?
  • 「重複排除」と「ペルソナへの価値提供」の目的の違いを1分で説明できますか?
  • 自チームの開発テーマで、両者の視点を別々に整理できますか?

補足資料

  • 参考リンク: 増永良文『リレーショナルデータベース入門』、Day 1セッション07・08(IAの整理分類)
  • 発展課題: 自分が使っているWebサービスのURL構造を見て、「正規化視点で美しいURL」「IA視点で分かりやすいURL」の両方を書き分けてみる

学習ガイド

想定される質問と回答例

質問 ヒント
正規化したらUIに出すときに毎回JOINが大変では? その通り。だから「読み込み専用のビュー」や「キャッシュ」で工夫する
IAの整理分類は分類学(taxonomy)と違うの? 分類学はIAの中の1つの手法。IAはもっと広く「探しやすさ・伝わりやすさ」を扱う
正規化しないとどうなる? 矛盾データが発生、更新コストが増、データ量が肥大化

つまずきやすいポイント

つまずきポイント ヒント
「同じデータを違う視点で見る」が腑に落ちない 1つの料理を「栄養成分表」と「メニュー写真」で見せ分ける、と置き換えてみる
第1〜3正規形の定義が暗記しづらい 「1NF=セル1値、2NF=部分関数依存除去、3NF=推移関数依存除去」で覚える
どこまで正規化すべきか分からない 業務システムは3NFまでが定石。それ以上は性能を見ながら判断
読み上げを開始します...

AIに質問する