データベースデータ操作★★★

商品コードと商品名をもつ商品表と、売上日・商品コード・数量をもつ売上表がある。 売上表には商品名が入っていない。売上表の各行に商品名を加えた一覧を得たい。 このときに行う関係演算として、最も適切なものはどれか。

正解:

  1. 売上表から、指定した条件に合う行だけを取り出す。

    誤り。選択の説明です。一つの表の中から欲しい行を絞り込む操作なので、 特定の商品や特定の期間の売上だけを見たいときには使えますが、 売上表にない商品名を持ってくることはできません。

  2. 売上表から、指定した列だけを取り出す。

    誤り。射影の説明です。これも一つの表の中の操作で、もともとある列から 必要なものを選ぶだけです。売上表に商品名の列がない以上、 いくら列を選んでも商品名は現れません。

  3. 二つの表の行を、そのまま縦に積み上げて一つにまとめる。

    誤り。同じ形をした表どうしを縦につなぐ操作(和)の説明です。支店ごとの 売上表を一つにまとめるような場面で使います。行数は増えますが、 列は増えないので商品名は加わりません。

  4. 商品コードの値が一致する行どうしで、二つの表を横につなぐ。

    正解。結合です。二つの表に共通する商品コードを手がかりに行を対応づけるので、 売上表の各行に商品表の商品名を並べた一覧が得られます。

行を絞るか、列を絞るか、表をまたぐか

関係データベースの表に対する基本の操作は三つだけです。頭の中で表を思い浮かべ、 どちらの向きに切るのかで覚えると迷いません。

  • 選択 … 条件に合う行だけを取り出す(表を横向きに切る)
  • 射影 … 必要な列だけを取り出す(表を縦向きに切る)
  • 結合 … 二つの表を共通する項目の値でつなぎ、一つの表にする

選択と射影は「一つの表の中を絞る」操作です。もとの表に入っていない情報が、 これらの操作で新しく生まれることはありません。

今回の場面をたどる

売上表には商品コードしかなく、商品名は商品表にあります。どちらの表にも商品コード という共通の項目があるので、その値が同じ行どうしを対応づければ、売上の1行に 商品名を並べられます。これが結合です。

実際の業務では、結合で必要な表をつないだうえで、選択で期間を絞り、射影で 表示する列を選ぶ、というように三つを組み合わせて使います。組み合わせても、 それぞれの操作が担う役割は変わりません。

混同しやすい操作との違い

操作 何をするか
選択 条件に合う行を取り出す
射影 指定した列を取り出す
結合 共通する項目の値で二つの表を横につなぐ
同じ形の二つの表を縦に積み上げる

試験では「一つの表の中で足りるか、別の表の情報が要るか」を先に判断すると、 結合かそれ以外かがすぐに分かれます。

次の問題へ