関係代数(選択・射影・結合)とは?かんけいだいすう
関係代数(選択・射影・結合)とは、関係データベースの操作を数学として定式化したもので、どの演算も表を受け取って表を返す。行を条件で絞り込む選択、必要な列だけを抜き出す射影、共通の列を手がかりに2つの表をつなぐ結合が基本にあり、これに和・差・直積といった集合演算が加わる。SQLの各構文は、この演算のどれかに対応づけて覚える。
最終更新:2026-10-09
この語が出る過去問を解く →背景
表計算のように場当たりで表を加工していると、同じ問合せでも書き方によって結果が変わり、処理を速くする余地も見つけられない。そこで、表への操作を閉じた少数の演算だけで組み立てられるように定式化したのが関係代数である。DBMSがSQLを内部で並べ替えて効率よく実行できるのは、この理論的な裏づけがあるため。
具体例
「WHERE 部署='営業'」が選択、「SELECT 氏名, 部署」が射影、「FROM 社員 JOIN 部署 ON 社員.部署コード = 部署.部署コード」が結合にあたる。結合条件を書き忘れると直積になり、社員100行と部署10行から1,000行が返ってきてしまう。
試験での引っ掛け
選択が行の絞り込み、射影が列の取り出しで、この2つの取り違えが非常に多い。原因は用語の衝突にあり、SQLのSELECT句は列を指定するのに対し、関係代数の選択は行を選ぶ操作を指す。名前で覚えず「横に切るのか縦に切るのか」で押さえると崩れない。
関連用語
出た過去問
出典:平成28年度 秋期 基本情報技術者試験 午前 問28(IPA)
関係代数の演算のうち,関係R,Sの直積(R×S)に対応するSELECT文はどれか。ここで,関係R,Sを表R,Sに対応させ,表R及びSにそれぞれ行の重複はないもの…
正解:SELECT * FROM R, S
要点:直積はFROMに表を並べた全組合せ。行数はm×n
直積は、2つの関係のすべての行の組合せを作り、列を連結した関係を得る演算である。SQLではFROM句に複数の表を結合条件なしで並べると各行の全組合せが得られるため、これが直積に対応する。行数はRとSの行数の積になる。
出典:平成28年度 春期 基本情報技術者試験 午前 問27(IPA)
関係XとYを結合した後,関係Zを得る関係代数演算はどれか。
正解:射影と選択
要点:行を絞るのが選択、列を取り出すのが射影
結合後の表には学生と学部の情報が全て並ぶが、得られた関係Zでは学部名が情報学部の行だけが残り、列も学部名・学生番号・氏名の3つに絞られている。行を条件で絞り込む演算が選択、必要な列だけを取り出す演算が射影なので、この二つを組み合わせればZが得られる。和は二つの関係の行を合わせる演算であり、ここでは使われていない。
出典:平成30年度 秋期 基本情報技術者試験 午前 問28(IPA)
関係XとYを自然結合した後,関係Zを得る関係代数演算はどれか。
正解:選択と射影
要点:行を絞るのが選択、列を絞るのが射影
結合後の表から特定の学部名の行だけを取り出しているので、条件に合う行を絞り込む演算が必要である。さらに列も学部名・学生番号・氏名の3つに限られ、学部コードが消えているので、必要な列だけを取り出す演算も併用されている。
出典・参考
公式シラバスの3 技術要素 > 3. データ操作 > (1) データベースの操作に掲載されている用語です。
解説は資格暗記が独自に作成しています。過去問の出典は各問題に記載のとおりです。