カテゴリ: 基本情報技術者試験 更新日: 2025/09/27

直積(チョクセキ)とは?データベースの集合演算を初心者向けに解説

直積(表の集合演算)
直積(表の集合演算)

先生と生徒の会話形式で理解しよう

生徒

「先生、データベースの集合演算に直積(チョクセキ)という言葉が出てきました。これはどんな意味なんですか?」

先生

「直積(チョクセキ)は、二つの表(テーブル)のすべての組み合わせを作り出す集合演算(シュウゴウエンザン)のひとつです。英語ではCartesian Product(カーティジアンプロダクト)と呼ばれます。」

生徒

「すべての組み合わせってどういうことですか?なんだかデータがすごく増えそうですね。」

先生

「その通りです。直積をすると、片方の表の行ともう片方の表の行をすべて組み合わせるので、結果は掛け算のように増えていきます。」

基本情報技術者試験をこれから学習する人や、 独学で確実に合格レベルまで到達したい人におすすめの定番対策書です。

いちばんやさしい 基本情報技術者を見る

※ Amazonアソシエイト広告リンク

1. 直積(チョクセキ)とは?

1. 直積(チョクセキ)とは?
1. 直積(チョクセキ)とは?

直積(チョクセキ)とは、データベースの集合演算のひとつで、二つの表(テーブル)に含まれる全ての行(レコード)を組み合わせて新しい表を作る操作のことです。英語ではCartesian Product(カーティジアンプロダクト)と呼ばれます。数学の集合における直積の考え方をデータベースに応用したものです。

例えば表Aに3行、表Bに4行があれば、直積の結果は3 × 4 = 12行となります。つまり、掛け算のように行数が膨れ上がるのが直積の特徴です。

2. 直積の読み方と意味

2. 直積の読み方と意味
2. 直積の読み方と意味

直積は、読み方は直積(チョクセキ)といいます。英語表記はCartesian Product(カーティジアンプロダクト)です。意味は「すべての組み合わせを作り出すこと」であり、表と表の全レコードをペアにして結果を得る操作です。

日常生活に例えるなら「服と靴をすべての組み合わせで試す」といったイメージに近いです。シャツが3枚、靴が2足あれば、全部で6通りの組み合わせができます。これが直積の基本的な考え方です。

3. 直積の具体例

3. 直積の具体例
3. 直積の具体例

分かりやすくするために例を挙げましょう。次のような表があるとします。

表A(商品リスト)


商品ID | 商品名
1      | りんご
2      | バナナ

表B(店舗リスト)


店舗ID | 店舗名
101    | 東京店
102    | 大阪店
103    | 名古屋店

この二つの表を直積すると、次のような結果になります。

結果(直積)


商品ID | 商品名 | 店舗ID | 店舗名
1      | りんご | 101    | 東京店
1      | りんご | 102    | 大阪店
1      | りんご | 103    | 名古屋店
2      | バナナ | 101    | 東京店
2      | バナナ | 102    | 大阪店
2      | バナナ | 103    | 名古屋店

このように、すべての組み合わせが結果に現れます。商品数が2、店舗数が3なので、結果は2 × 3 = 6行になります。

4. 直積のSQLでの書き方

4. 直積のSQLでの書き方
4. 直積のSQLでの書き方

SQL(エスキューエル、Structured Query Languageの略、読み方はストラクチャードクエリランゲージ)では、直積を求めるときに特別なキーワードを使う必要はありません。単にカンマで二つの表を指定すると直積が得られます。


SELECT * 
FROM 商品, 店舗;

このSQL文を実行すると、商品表と店舗表のすべての組み合わせが出力されます。多くの場合、直積だけではなく、条件を加えて「どの商品がどの店舗で販売されているか」などを絞り込むことが多いです。

5. 直積と内部結合の関係

5. 直積と内部結合の関係
5. 直積と内部結合の関係

直積は内部結合(ナイブケツゴウ)や外部結合(ガイブケツゴウ)と深い関係があります。結合(ジョイン)も集合演算の応用で、特定の条件で二つの表を組み合わせる操作です。

直積は「無条件の結合」と考えることができます。つまり、条件を何も指定しないで全ての組み合わせを作る操作です。そのため、多くの場合は直積にWHERE条件をつけて、必要なデータだけを残す形で内部結合に発展させます。

6. 直積の注意点

6. 直積の注意点
6. 直積の注意点

直積を使うときには、いくつかの注意点があります。

  • 結果が非常に大きくなりやすい(表Aが100行、表Bが200行なら結果は20,000行)
  • 不要な組み合わせまで含まれるため、そのまま使うことは少ない
  • 実務では直積に条件を組み合わせて結合(ジョイン)として使うのが一般的

直積を単独で使うよりも、「全ての組み合わせを一度作ってから条件で絞る」という考え方を理解しておくと応用しやすくなります。

7. 直積の使いどころ

7. 直積の使いどころ
7. 直積の使いどころ

直積は一見すると無駄が多いように見えますが、実はとても重要な役割を持っています。

  • 商品の一覧と店舗一覧を直積してから、販売データを条件で結合する
  • 全社員と全資格を直積して、未取得資格を洗い出す
  • 全ユーザーと全サービスを直積して、利用していないサービスを確認する

このように直積は、他の集合演算や結合の基礎になる演算であり、データベースを理解するうえで避けては通れない重要な仕組みです。

カテゴリの一覧へ
新着記事
New1
基本情報技術者試験
基数とは?初心者向けにわかりやすく解説【2進数・10進数・16進数の違いも理解】
更新記事
New2
情報セキュリティマネジメント試験
平文とは?暗号化されていないデータの意味を初心者向けにやさしく解説
更新記事
New3
情報セキュリティマネジメント試験
復号とは?初心者向けにやさしく解説|暗号との違いや使い方・解読との違いも理解しよう
更新記事
New4
基本情報技術者試験
RAID1とは何か?補助記憶装置でデータを安全に守る仕組みを初心者向けに解説
新規投稿
人気記事
No.1
Java&Spring記事人気No1
基本情報技術者試験
イーサネット(Ethernet)とは?初心者にもわかるLANの基本技術をやさしく解説
No.2
Java&Spring記事人気No2
基本情報技術者試験
NIC
220
NICとは何か?初心者にもわかるネットワークインターフェースカードの基本
No.3
Java&Spring記事人気No3
基本情報技術者試験
セグメントとは?ネットワークの基本単位を初心者向けにやさしく解説
No.4
Java&Spring記事人気No4
基本情報技術者試験
CPU
115
CPUとは何かを完全解説!初心者でもわかるコンピュータの頭脳の仕組み
No.5
Java&Spring記事人気No5
基本情報技術者試験
パケットとは?初心者にもわかりやすくネットワークの仕組みをやさしく解説!
No.6
Java&Spring記事人気No6
基本情報技術者試験
IMAPとは?初心者でもわかるメール受信プロトコルの仕組みと使い方
No.7
Java&Spring記事人気No7
基本情報技術者試験
IPv4とは?初心者でもわかるIPアドレスの基本と通信のルール
No.8
Java&Spring記事人気No8
基本情報技術者試験
Telnetとは?初心者にもわかる仕組みと使い方をやさしく解説!