関係データの操作
要点と定義
関係データベースのデータ操作には、集合演算の和・差・積(共通)と、関係演算の選択・射影・結合・商・直積があります。選択は条件に合う行を取り出し、射影は必要な列を取り出します。直積は二つの関係の行の組合せを作り、結合は条件に合う行どうしを対応させます。これらは関係データをどう加工するかを考える基本です。
和を行う二つの関係は、対応する属性の構成が同じである必要があります。過去の出題で扱った補足として、同じタプルは和の結果に一度だけ現れます。差は一方にあり他方にないタプルを残し、共通部分は両方にあるタプルを残します。
差の式は集合の意味に沿って順に追えます。RからR−Sを除くと、RのうちSに含まれない要素が取り除かれ、RとSの両方に含まれる要素が残ります。したがって R−(R−S) は R∩S です。この関係を使えば、差だけで共通部分を表す式を判断できます。
等結合は、二つの関係の直積を作り、結合する属性値が等しい組を選択する操作として表せます。直積と選択の役割を分けて考えると、結合の定義を確認できます。
属性がn個ある関係について、属性部分集合の数を数えるときは、各属性に「含める・含めない」の二通りがあります。空集合と全属性の集合も数える条件なら、部分集合は2ⁿ通りです。これは属性の選び方の数であり、実際のデータ値の種類を数えるものではありません。過去の出題で扱った補足です。
SQLのSELECT文では、条件に合う行や必要な列の指定、表の結合、集約、グループ化、並べ替えなどを行います。過去の出題で扱った補足として、EXCEPTは左側の検索結果から右側にもある行を差し引く集合演算として問われ、重複する値は結果に一度だけ残りました。
適用条件と例
たとえば配送表から遅延中の配送番号を得るなら、遅延状態の行を選択してから配送番号を射影します。先に配送番号だけにすると、状態を条件に使えません。条件に必要な列を残して行を選び、その後で出力する列を絞るのが判断の手がかりです。
入れ子ループ法では、外側の表の各タプルについて内側の表を調べます。過去の出題で扱った補足として、両表にそれぞれn個のタプルがある単純な場合、比較回数は n×n=n² となり、計算量は O(n²) です。
LEFT OUTER JOINでは、左側の行に右側の対応行がない場合も左側の行が結果に残り、対応する右側列はNULLになります。過去の出題で扱った補足として、右側の結合条件をONに置き、左側の対象条件をWHEREに置く形なら、右側に対応行がない左側の行も残せます。右側列をWHEREで絞り込むと、対応行のない行が結果から除かれることがあります。
この節の続き
- 誤りやすい点
ここまでが冒頭部分です。ログインすると、無料でも1日2節まで全文をお読みいただけます。
アプリでこの節を読む