
武蔵野個別指導塾の特徴
高校情報I 選択と射影—行の条件と列の取り出しを分けて検索結果を確かめる|武蔵野個別指導塾

素材在庫表で条件の括弧と重複行を点検する方法は選択と射影です。
よくあるのは、工作に使う素材の在庫表から必要な列を減らせば、条件に合わない行も消えると思う場面です。列を減らす操作と、行を条件で選ぶ操作は別です。まず元の行で条件を判定し、残した行から必要な項目を取り出します。表の行が同じ見た目になっても、重複を残す規則なら勝手に1行にまとめません。ここで扱う表と数値は学習用に作ったものです。
出方には、文章をANDやORの条件に直す型、括弧の位置による結果の違いを調べる型、列を減らした結果と件数を照合する型があります。いずれも元表の各行へ戻ることが、答えの検証につながります。
行の選択と列の射影
表の横1行は1件の記録で、縦の列は素材名や色、残りの個数などの項目です。選択は、指定した条件を満たす行を残す操作です。例えば「個数が3個以上」なら、各行の個数を見て、3を含めてそれ以上の行を残します。条件に合わない行は結果から外れますが、元の在庫表が書き換わるわけではありません。
射影は、指定した列を取り出す操作です。素材名と色だけを取り出しても、行の条件を別に指定しなければ元の各行に対応する結果が残ります。列を減らすことと行を絞ることを混同すると、欲しい記録が消えたように見えたり、不要な記録が残った理由を説明できなくなったりします。

図1のように、まず行を選び、次に必要な列を取り出す流れにすると、判定に使った列を最後の表示から外せます。選択前に判定用の列を落としてしまうと、残った表だけではその条件を調べられません。表示しない列でも、判定には必要なことがあります。
ANDは両方の条件が成り立つ行、ORは少なくとも一方が成り立つ行を選びます。両方に当てはまる行もORに含みます。例えば「青で、かつ3個以上」は青という条件と個数の条件をどちらも確かめます。「青または紙」は両方を満たす行を二重に数えるという意味ではありません。
括弧は条件のまとまりを示します。「紙で、かつ青または赤」と言われたら、意図を「紙 AND (青 OR 赤)」のように明示します。一方「(紙 AND 青) OR 赤」は、紙以外の赤も含めます。どちらが適切かは日本語の意図によります。曖昧な文章から式を作るときは、含める行と含めない行の例を挙げて確認します。
射影後の重複にも規則が必要です。数学の集合として射影する場合は同じ組を1つにまとめます。ここでの表操作は、特に断らない限り、元の異なる行から同じ値の組ができても重複を残します。行の順序も元表の順にします。これにより、表示上同じ2行が別の記録に由来することを数えられます。重複を取り除くときは、どの列の組が同じかと、その前後の件数を示します。
欠損は0や空文字と同じとは限りません。以下の通常の問題では全項目が記録済みです。欠損がある場合は判定規則を問題ごとに決め、推測で値を埋めず、判定不能の行を別に控えます。結果が0行のときも、条件に合う記録がない場合と入力や処理が失敗した場合を分けて調べます。
基本例題:色と個数で在庫を選ぶ
次は展示物の制作に使う素材の在庫です。各行は別の保管記録で、個数の単位は個です。色が青で、個数が3以上の行を選び、素材名と色をその順に表示してください。重複は残し、行は元表順にします。件数と元の記録番号も答えてください。
| 記録番号 | 素材名 | 色 | 個数 |
|---|---|---|---|
| A | 紙 | 青 | 4 |
| B | 布 | 赤 | 5 |
| C | 紙 | 青 | 2 |
| D | 紙 | 青 | 3 |
| E | 木 | 青 | 1 |
1行ずつ、青かどうかと3以上かどうかを判定します。境界の3も「以上」に含みます。
- Aは青で、4は3以上なので残します。
- Bは赤なので、個数が5でも残しません。
- Cは青ですが、2は3以上ではないので残しません。
- Dは青で、3は3以上なので残します。
- Eは青ですが、1は3以上ではないので残しません。
残る記録番号はA、Dで、選択後は2行です。そこから素材名と色を取り出すと、順に「紙・青」「紙・青」となります。両方とも表示が同じでも、AとDは異なる記録なので2行のままです。個数を表示しなくても、選択時には4と3を参照しています。

図2のようにAとDが結果の2行に対応します。元表へ戻すとAは4個、Dは3個で、どちらも青です。除いたB、C、Eもそれぞれ少なくとも一方の条件を満たさないので、選び漏れと余分な行の両方を点検できます。合計7個という量を求める問題ではないため、表示した2行と個数の合計を混同しないでください。
もし基準を4以上に変えれば、Aだけが残ります。逆に青の条件を外して3以上とするとA、B、Dです。条件の一部分だけを変えて結果の差を追うと、どの条件が行を外したかが見えます。射影する列を素材名だけに変えても、選択条件が同じなら元の対象はAとDのままです。
標準例題:括弧で対象が変わる
次の在庫から「紙で、色が白または赤」の記録を探します。条件を括弧つきで表し、記録番号と素材名を元表順に表示してください。重複は残し、件数も答えてください。色は各行に1つだけ記録されています。
| 番号 | 素材名 | 色 | 個数 |
|---|---|---|---|
| P | 紙 | 白 | 6 |
| Q | 紙 | 赤 | 2 |
| R | 布 | 赤 | 4 |
| S | 紙 | 青 | 3 |
| T | 木 | 白 | 5 |
求める式は「素材名が紙 AND (色が白 OR 色が赤)」です。色の2条件を先にひとまとまりとして調べ、その結果と素材名の条件をANDで結びます。
- Pは紙で、白または赤にも当てはまるため選びます。
- Qは紙で、赤に当てはまるため選びます。
- Rは赤ですが紙ではないため選びません。
- Sは紙ですが白でも赤でもないため選びません。
- Tは白ですが紙ではないため選びません。
結果は「P・紙」「Q・紙」の2行です。射影後も番号を表示しているので区別できます。番号を表示せず素材名だけにするなら「紙」「紙」の2行で、件数は変わりません。元表でPは白、Qは赤と確かめると、求めた2行が指定に戻ります。
括弧を変えた「(紙 AND 白) OR 赤」では、PとQに加えRも入ります。Rは紙でなくても赤だからです。両式の差はRに現れます。式だけを眺めて同じと思ったら、片方では入ってもう片方では入らない行を作ると違いを検査できます。
逆に選択結果が想定より多いときは、ORの片側だけで通る行を調べます。想定より少ないときは、括弧の中のORを誤ってANDにしていないかを確認します。この表では1行に色が1つなので、白かつ赤という条件はどの行も満たしません。0行という結果自体は、正しく処理した結果としても起こり得ます。
発展例題:欠損と重複を区別する
次の表で「分類が紙、または個数が4以上」の記録を選び、分類だけを元表順に表示します。空欄は未記録を意味します。個数の比較は空欄なら判定不能とし、ORは一方が真なら真、両方が偽なら偽、それ以外は判定不能とします。真の行だけを結果に載せ、判定不能の番号は別に記してください。重複は残します。
| 番号 | 分類 | 個数 |
|---|---|---|
| U | 紙 | 空欄 |
| V | 布 | 4 |
| W | 紙 | 1 |
| X | 木 | 空欄 |
| Y | 布 | 2 |
- Uは紙という条件が真です。個数は判定不能でもOR全体は真です。
- Vは紙ではありませんが、4以上なので真です。
- Wは紙なので真です。個数が4未満でも残ります。
- Xは紙ではなく、個数の条件が判定不能なので全体も判定不能です。
- Yは紙ではなく、2は4以上でもないので偽です。
真の番号はU、V、W、表示は「紙」「布」「紙」の3行です。判定不能はX、偽はYです。空欄を0とみなせばXを偽と判定してしまいますが、0個だったという記録はありません。Xの個数を確認して初めて、4以上なら真、4未満なら偽と決められます。
集合の射影として重複を除く規則なら、表示される分類の組は紙と布の2種類です。3件の記録が2種類に見えるので、種類数と記録件数を区別します。UとWの両方が紙であることを元表に戻して確認すれば、3行から2種類への変化を説明できます。判定不能のXを勝手に結果へ追加したり、確認済みの偽として捨てたりしないことも重要です。
実際に表を受け取れない、項目名が想定と違う、処理が途中で止まるといった場合には、0行という表を成功した結果として扱えません。まず入力が届いたか、列名と行数が読めたか、処理が最後まで終わったかを確認します。原因が取り除かれるまでは結果を未確定として再取得または再実行し、古い結果を今回の結果として使わないようにします。
誤答を行まで戻して直す
基本例題で「素材名と色だけを表示すると、青でない行や個数が少ない行が自動で消える」と考えると、射影だけでAとDになるという誤答になります。しかし射影だけではAからEまでの5行が残ります。Bの赤も、CとEの少ない個数も、行を選ぶ条件がない以上は消えません。

図3のように、行を選ぶ条件を先に明記してから列を取り出します。正しい手順は「青 AND 個数3以上」でAとDを残し、素材名と色を表示することです。答えは同じ見た目の2行です。射影だけの5行と、選択後の2行を元の記録番号で追うと、どの操作が行数を変えたかがはっきりします。
別の失敗は、同じ表示の2行を見て無条件に1行にまとめることです。集合としての射影なら1種類ですが、この例の表操作は重複を残す規則です。結果を使って保管記録の件数を調べるなら、勝手な重複除去は件数を変えます。何を数えるかを確認し、必要なら記録番号も一時的に残して対応を追います。
練習問題
次の表は別の制作室の記録です。個数の単位は個で、全項目が記録済みです。各問は表を独立に使い、指定がなければ重複を残し、行は元表順にします。表示する列の順は問題文の順です。
| 番号 | 素材名 | 色 | 個数 |
|---|---|---|---|
| K | 布 | 緑 | 3 |
| L | 紙 | 黄 | 5 |
| M | 布 | 黄 | 5 |
| N | 木 | 緑 | 2 |
| O | 布 | 緑 | 5 |
| R | 紙 | 緑 | 1 |
- 色が緑で、個数が3以上の行を選び、番号と素材名を表示してください。件数も答えてください。
- 「布、または黄」の条件を式にし、該当する番号を元表順に答えてください。両方を満たす行も1回だけ数えます。
- 「布で、緑または黄」の条件を括弧つきで書き、番号と色を表示してください。木の緑が含まれるかも説明してください。
- 個数が5の行を選び、色だけを表示してください。重複を残す行数と、同じ色をまとめた種類数をそれぞれ答えてください。
- 担当者が「緑 AND 個数3以上」の結果をK、N、Oと報告しました。正しい番号と、報告の誤りを元表の値で示してください。また、表の読み込みに失敗した場合、同じ報告を確定結果にできるか答えてください。
練習の答えと解き方
-
正解は「K・布」「O・布」の2行です。Kは緑で3個、Oは緑で5個なので両条件を満たします。NとRは緑ですが、それぞれ2個と1個なので外れます。LとMは個数が条件を満たしても黄色です。元表の6行を確認すると、残すべき緑の行に漏れはありません。
-
式は「素材名が布 OR 色が黄」で、番号はK、L、M、Oの4件です。KとOは布、Lは黄、Mは布かつ黄です。Mは両側で真ですが、元の1行を2回出すわけではありません。NとRは布でも黄でもないため外れます。
-
式は「素材名が布 AND (色が緑 OR 色が黄)」です。結果は「K・緑」「M・黄」「O・緑」の3行です。各行は布で、色も括弧内のいずれかです。Nは緑ですが素材名が木なので含みません。Rも緑ですが紙なので含みません。括弧を変えて緑だけで通る式にすると、意図と異なる行が入ります。
-
個数が5の番号はL、M、Oです。色の表示は「黄」「黄」「緑」の3行で、種類数は黄と緑の2種類です。LとMの黄は別の記録なので、重複を残す表示では2行です。元表へ戻すと3件とも5個であり、種類数2を元の記録件数と取り違えていないことを確かめられます。
-
正しい番号はK、Oです。報告のNは緑ですが2個で、3以上という条件を満たしません。Kの3個は境界を含むので残り、Oの5個も残ります。Rは緑でも1個なので入らず、黄色のLとMも入りません。読み込みに失敗した場合は表の全行を判定できていないため、この報告を確定結果にはできません。入力の取得と読み込みの成功を確認してから、同じ条件で全行を調べ直します。
覚えておくこと
- 選択は条件で行を残し、射影は必要な列を取り出します。
- ANDとORは括弧を含めて各行に適用します。
- 重複、欠損、順序の扱いを先に決め、結果を元の行へ戻します。
- 0行という結果と、入力や処理の失敗を区別します。
つまずきを見分ける
列を消しただけで件数が減ると答えたら、まず記録番号を隠さずに射影し、元の各行がどこへ対応するかを指で追います。括弧に迷う場合は、紙以外の赤のように式の差が出る行を置き、各条件の真偽を個別指導で確認します。重複をまとめた場合は、元の何件が同じ表示に対応するかを数え直します。結果の行には、選んだ理由と元の記録への道筋が残ります。
読んで終わりにするか、ここから変えるか。
武蔵境駅徒歩30秒、講師1人に生徒1人の完全1対1。授業のあいだ、先生は隣を離れません。いまの詰まりを、無料相談でそのまま話してください。
まず15分だけ電話で話したい方は、無料電話相談(15分)から。塾からお電話を差し上げます。
本気になった日が、入塾の日。
お子様の教育、迷ったら「丸投げ」してください。必ず、期待以上の結果で返します。武蔵野で育む、武蔵境で学ぶ。
電話は年中無休。365日、24時間、お電話可能。




