はい、非正規化されたテーブルにも普通に SELECT をかけることは可能です 👍
ただし、「非正規化されている」というのは データの持ち方に冗長性がある状態 を指すので、SELECT の挙動や扱い方に注意が必要です。
🔎 非正規化テーブルに対する SELECT の例
例:注文テーブルを非正規化したケース
注文ID | 顧客名 | 商品名 | 商品価格 | 商品数------------------------------------------------1 | 山田太郎 | ノートPC | 100000 | 11 | 山田太郎 | マウス | 2000 | 22 | 佐藤花子 | キーボード | 5000 | 1
そのまま SELECT
SELECT * FROM 注文テーブル;
→ 結果は上の通り。非正規化でも普通に全件取れる。
集約して顧客ごとの注文を見たい場合
SELECT 顧客名, SUM(商品価格 * 商品数) AS 合計金額FROM 注文テーブルGROUP BY 顧客名;
→ 正規化されていなくても、集計関数で欲しい形にできる。
✅ SELECT 可能だけど注意点
冗長データによる重複
更新時の不整合
クエリが複雑化する場合も
💡 まとめ
非正規化されたテーブルでも SELECT は問題なく可能。
ただし「冗長さ」に起因して、重複や不整合をどう扱うかに気を付ける必要がある。
SELECT 時に DISTINCT や GROUP BY を駆使して、意図通りの結果を得るようにする。
この記事へのコメント