非正規化のテーブルにセレクトをかけることは可能ですか?

boitumelo-0DJHJcpwN9Q-unsplash.jpg

質問

非正規化のテーブルにセレクトをかけることは可能ですか?


解答

はい、非正規化されたテーブルにも普通に SELECT をかけることは可能です 👍

ただし、「非正規化されている」というのは データの持ち方に冗長性がある状態 を指すので、SELECT の挙動や扱い方に注意が必要です。


🔎 非正規化テーブルに対する SELECT の例

例:注文テーブルを非正規化したケース

注文ID | 顧客名   | 商品名   | 商品価格 | 商品数------------------------------------------------1     | 山田太郎 | ノートPC | 100000  | 11     | 山田太郎 | マウス   | 2000    | 22     | 佐藤花子 | キーボード | 5000   | 1

そのまま SELECT

SELECT * FROM 注文テーブル;

→ 結果は上の通り。非正規化でも普通に全件取れる。

集約して顧客ごとの注文を見たい場合

SELECT 顧客名, SUM(商品価格 * 商品数) AS 合計金額FROM 注文テーブルGROUP BY 顧客名;

→ 正規化されていなくても、集計関数で欲しい形にできる。


✅ SELECT 可能だけど注意点

  1. 冗長データによる重複

    • 同じ顧客名や住所が繰り返し格納されている → DISTINCT を使わないと重複が出やすい。

  2. 更新時の不整合

    • 顧客名を修正したいとき、複数行すべて更新しないと「山田太郎」「山田太朗」など食い違いが発生。

    • SELECT で集計すると誤った結果になることがある。

  3. クエリが複雑化する場合も

    • 欲しい情報を抽出するとき、正規化済みなら JOIN で済むところが、非正規化だと GROUP BYDISTINCT が多用されがち。


💡 まとめ

  • 非正規化されたテーブルでも SELECT は問題なく可能

  • ただし「冗長さ」に起因して、重複や不整合をどう扱うかに気を付ける必要がある。

  • SELECT 時に DISTINCTGROUP BY を駆使して、意図通りの結果を得るようにする。





システムプログラミング入門 UNIXシステムコール,演習による理解 (Computer science library) [ 渡辺知恵美 ]

価格:2420円
(2025/8/29 11:03時点)
感想(0件)


BigQueryではじめるSQLデータ分析 GA4 & Search Console & Googleフォーム対応 [ 木田 和廣 ]

価格:3080円
(2025/6/6 10:26時点)
感想(0件)


 



この記事へのコメント

広告です。クリックいただけると励みになります。