【びゅー】

ビュー(DB) とは?

💡 複雑なSELECT文を「テーブルのように使える仮想テーブル」として定義する
📌 このページのポイント
ビュー(VIEW)の仕組み users id name 1 田中 2 佐藤 3 鈴木 4 高橋 orders id u_id amount 1 1 5000 2 1 3000 3 2 8000 CREATE VIEW order_summary AS SELECT u.name, o.amount FROM users u JOIN orders o ON u.id=o.u_id 💡 保存されるのはクエリ定義のみ order_summary (仮想テーブル) name amount 田中 5000 田中 3000 佐藤 8000 実行時に毎回生成 ✓ メリット 複雑なクエリを簡略化・権限制御 ⚠ 注意 データ実体なし・更新制約あり
ビューの仕組み
ひよこ ひよこ

ビューって何?

ペンギン先生 ペンギン先生

複雑なSQLを「仮想テーブル」として定義しておく仕組みだよ。例えば「売上上位のユーザー一覧」という複雑なJOIN+GROUP BYクエリビュー(high_value_users)として登録しておけば、「SELECT * FROM high_value_users」と書くだけで使える。

ひよこ ひよこ

データが保存されるわけじゃないの?

ペンギン先生 ペンギン先生

通常のビューはデータを持たない(仮想テーブル)。ビューを参照するたびに定義されたSQLが実行される。マテリアライズドビュー(実体化ビュー)というデータをキャッシュする高度な機能もあるけど。

ひよこ ひよこ

セキュリティに使えるって?

ペンギン先生 ペンギン先生

ユーザーに見せてよいカラムだけのビューを作ってそちらへのアクセス権を与えることで、元テーブルの機密カラム(給与など)を隠せる。「人事部はsalaryカラムあり・一般社員はsalaryなしのビューを参照」みたいな制御ができる。

ひよこ ひよこ

ビューを使いすぎると問題になることってある?

ペンギン先生 ペンギン先生

ビューの上にビューを重ねる「ネストビュー」は要注意だよ。3段4段と重なると、実行されるSQLが複雑になってパフォーマンスが劣化するし、どのテーブルのデータを見ているか追跡が困難になる。実は「マテリアライズドビュー」という選択肢もあって、通常のビューがアクセスのたびにSQLを実行するのに対し、結果を実体として保存するからSELECTが高速なんだ。PostgreSQLの「REFRESH MATERIALIZED VIEW」でデータを更新するよ。リアルタイム性は失われるけど、集計テーブルのように頻繁に参照されるが更新頻度が低いデータには最適だね。

ペンギン
まとめ:ざっくりこれだけ覚えればOK!
ビューって出てきたら「複雑なSQLを仮想テーブルとして定義して簡単にアクセスできる仕組み」と思えばOK!
📖 おまけ:英語の意味
「View」 = 見る・見方・ビュー
💬 データの「特定の見方(view)」を定義したもの。同じデータでも部門別・用途別に異なるビューを作れる
← 用語集にもどる