射影(関係演算)とは?初心者向けにわかりやすく解説|データベース基礎
生徒
「先生、データベースの勉強で“射影(関係演算)”って出てきました。これはどんな意味なんですか?」
先生
「射影(シャエイ)は、関係代数(カンケイダイ数)の基本操作の一つです。英語ではProjection(プロジェクション)と呼ばれ、テーブルから特定の列だけを取り出す演算のことです。」
生徒
「列だけ取り出すんですか?例えば“名前と住所だけを表示する”みたいな感じですか?」
先生
「その通りです。必要な項目だけを抜き出すことで、見やすく整理できるのが射影の役割なんです。」
生徒
「なるほど!SQL(エスキューエル)でいうSELECT文に近いですね?」
先生
「はい、まさにSQLの列選択と同じ考え方です。それでは詳しく見ていきましょう。」
1. 射影(関係演算)の基本とは?
射影(シャエイ)は、関係代数における基本演算の一つで、英語ではProjection(プロジェクション)と呼ばれます。テーブル全体から特定の列(カラム)だけを抽出する操作のことです。例えば社員テーブルから「名前」と「年齢」だけを取り出したいときに使われます。
2. 射影のイメージ
射影は、必要な列だけを残して不要な列を捨てるようなイメージです。例えば学校の成績表には「名前・国語・数学・英語・理科・社会」など多くの列があります。その中から「名前」と「数学」だけを表示すれば、それが射影の操作になります。データを簡潔に表示できるので、扱いやすさが向上します。
3. SQLでの射影の表現
SQLでは、射影を実現するのにSELECT句を使います。以下は例です。
SELECT 名前, 年齢 FROM 社員;
このクエリでは、社員テーブルから名前と年齢の列だけを取り出しています。射影の操作そのものをSQLで表現したものです。
4. 射影で使える応用
射影は単純に列を抜き出すだけでなく、次のような使い方ができます。
- 列の重複を取り除く(DISTINCTを使う)
- 列に計算を加えて表示する(例:給与×12で年収を表示)
- 列名をわかりやすく変更して表示する(ASを使う)
例えば「社員の部署リストを重複なしで表示する」といった処理は、射影とDISTINCTを組み合わせたものです。
5. 射影を使うメリット
射影を使うことで、データの見通しを良くし、必要な情報だけに絞り込むことができます。例えば次のような場面で役立ちます。
- 顧客リストから「名前と電話番号」だけを取り出して連絡先一覧を作る。
- 商品のデータから「商品名と価格」だけを表示してカタログを作る。
- 成績データから「名前と平均点」だけを抜き出す。
こうした使い方により、余計な情報を省いて必要なものだけに集中できます。
6. 射影と選択の違い
関係代数には、射影と選択という似た操作があります。射影は「列」を選ぶ操作で、選択は「行」を選ぶ操作です。例えば射影では「名前と住所の列だけ」を取り出し、選択では「年齢が30歳以上の行だけ」を取り出します。この二つを組み合わせることで、例えば「30歳以上の人の名前と住所だけ」を表示することができます。
7. 射影の歴史的な背景
射影という概念は、1970年代にエドガー・F・コッド(Edgar F. Codd エドガーエフコッド)が提唱した関係モデル(カンケイモデル)に基づいています。数学の集合論から発想を得た関係代数の中で、射影は必要な項目を抽出するための基本的な操作として位置づけられました。今日のSQLにおけるSELECT句も、この理論を基礎にしています。