実表と導出表(base table / derived table (view))
実表はデータを実際に保存している表。導出表は問合せの結果として作られる表で、中身を持たない。ビューがこれにあたる。
もう少し詳しい説明
関係データベース(データを表の形でためておく仕組み)に出てくる表は、2種類に分かれます。
| 中身を持つか | 何か | |
|---|---|---|
| 実表(基底表) | 持つ | ディスクに実際に保存されている表 |
| 導出表 | 持たない | 問合せの結果として、そのとき作られる表 |
ビューは、導出表に名前を付けて使えるようにしたものです。
ビューは「問合せに付けた名前」
ビューの正体は、保存されたデータではありません。SELECT文そのものです。
CREATE VIEW 営業部員 AS
SELECT 社員番号, 氏名 FROM 社員 WHERE 部署コード = 'S01'
これで作られたのは、行の集まりではなく、「営業部員と書かれたら、このSELECT文を実行する」という取り決めです。
あとから SELECT * FROM 営業部員 と書くと、その場で元の社員表に問い合わせが行われます。
元の表が変われば、ビューを通して見える内容もその場で変わります。 作った時点の中身が焼き付くわけではありません。ここが「複製して保存したもの」との違いです。
何のために使うのか
主な理由は2つです。
1つめは、見せる範囲を絞ること。 社員表には給与の列があるとします。給与を見せたくない相手には、給与の列を含まないビューを作り、そのビューだけを使わせます。実表そのものへの権限は与えません。
2つめは、複雑な問合せを隠すこと。 3つの表を結合して条件を付ける問合せを、毎回書くのは大変です。1度ビューにしておけば、以後は表1つを読むように書けます。
更新できるビューと、できないビュー
ビューに対しても、INSERTやUPDATEを書けることがあります。ただしいつでもできるわけではありません。
理由は単純で、ビューへの変更を、元の表のどこへ書き戻せばよいか決まらない場合があるからです。
| ビューの作り | 更新 | 理由 |
|---|---|---|
| 1つの表から、列を絞っただけ | できる | 書き戻す先が1行に決まる |
| 1つの表から、行を絞っただけ | できる | 同上 |
集計している(SUM、GROUP BY) | できない | 合計を1つ変えても、元のどの行を変えるか決まらない |
| 複数の表を結合している | 多くの場合できない | どちらの表を変えるか決まらない |
DISTINCT で重複を消している | できない | まとめた1行が、元のどの行かを特定できない |
「元の1行に戻せるか」が判断の軸です。合計を7から8に変えたいと言われても、どの明細を1増やすのかは決められません。
実体化ビューとの違い
名前の似た仕組みに実体化ビュー(マテリアライズドビュー)があります。こちらは問合せの結果を実際に保存します。
| ビュー(導出表) | 実体化ビュー | |
|---|---|---|
| 中身を持つか | 持たない | 持つ |
| 読むときの速さ | 元の表に問い合わせる | 保存済みを読むので速い |
| 元の表を変えたとき | その場で反映される | 更新するまで古いまま |
速さと引きかえに、古い内容が見えることがあります。 試験では「ビュー」とだけ書かれていれば、中身を持たないほうを指します。
試験ではこう出る
科目A(旧・午前)では、ビューが実体を持たないという点がそのまま問われます。「問合せに名前を付けたもの」「実体は元の表にある」と書いてある選択肢が正解です。
更新できないビューも出ます。集計を含むビュー、結合したビューが典型で、「元の1行に戻せない」が理由です。
実表(基底表)という言い方でも出ます。導出表と対になる語なので、両方そろえて覚えてください。
応用情報では、ビューを使った権限の絞り込みが、機密保護の文脈で出ます。「給与の列を除いたビューを作り、実表への権限は与えない」という形です。
関連する用語
ミニクイズ
関係データベースにおけるビュー(導出表)の説明として、適切なものはどれか。
正解は 3番:問合せに名前を付けたもので、データの実体は元の表にある
ビューは、SELECT文に名前を付けたものです。ビューを参照すると、その場で元の表に問い合わせが行われます。データの実体は元の実表にあり、ビュー自身は中身を持ちません。元の表が変われば、ビューを通して見える内容もその場で変わります。問合せの結果を複製して保存するのは、実体化ビュー(マテリアライズドビュー)と呼ばれる別の仕組みです。検索を速くするために値を並べ替えて持つのはインデックス(索引。目的の行を速く見つけるために別に作っておく一覧)、行を入れていない表は中身が空の実表で、どれもビューとは違います。
この分野をまとめて解く → データベースのミニテスト(全35問)
最終更新:2026-10-20