復習問題 2026-09-12
今日は4問ではなく3問にしました。第1問・第2問はデータベースの続き、第3問は正答率が一番低いネットワーク(8/25・30%)からです。第3問は昨日の第4問の続きなので、昨日の解説を覚えていれば考えるだけで解けます。
第1問 データベース
「部門」表の主キー 部門コード を、「社員」表の 部門コード が外部キーとして参照している。参照制約(参照整合性制約)が設定されているとき、データベース管理システムが拒否する操作はどれか。
| 部門(親) | 社員(子) |
|---|---|
| D01 開発部 / D02 営業部 | 1001 宮谷 D01 / 1002 佐藤 D01 |
- 社員 1002 を削除する
- 部門に D03(管理部)を追加する
- 部門から D01(開発部)を削除する
- 部門から D02(営業部)を削除する
解答
c. 部門から D01(開発部)を削除する
参照制約が守っているのは、たった一つのことです。「子の側に、親に存在しない値を持たせない」。これだけです。
D01 を消すと、社員 1001 と 1002 の 部門コード がどこにも存在しない部門を指した状態になります。これを宙に浮いた参照と呼び、制約が禁止しているのはこの状態です。実務で言えば、外部キー制約付きのテーブルで親レコードを DELETE して怒られる、あのエラーです。
他の選択肢が通る理由も、同じ一文から出てきます。
- a:子を消しても、親はそのまま残る。誰も困らない(部門に社員が0人でもよい)
- b:親を増やすだけ。D03 を指す社員はまだ居ないので矛盾しない
- d:D02 を指している社員が1人も居ないので、消しても宙に浮く子が発生しない
c と d の違いが「その親を指している子が居るかどうか」だけ、という点が問題の核です。
あわせて、親を消したいときの選択肢も押さえておきます。試験では ON DELETE の3択として出ます。
| 指定 | 親を削除したときの子の扱い |
|---|---|
RESTRICT(既定) | 子が居れば削除そのものを拒否する(=この問題の動き) |
CASCADE | 子も連鎖して削除する |
SET NULL | 子の外部キーを NULL にする(=所属なしにする) |
昨日の第1問で表を「社員」と「部門」に割りました。割ると必ずこの制約の話が付いてくる——正規化と参照制約はセットで出題されます。
第2問 データベース
ある表の 氏名 列に B木インデックスが定義されている。このインデックスによる高速化が期待できない検索条件はどれか。
WHERE 氏名 = '宮谷'WHERE 氏名 LIKE '宮%'WHERE 氏名 LIKE '%谷'WHERE 氏名 BETWEEN 'あ' AND 'か'
解答
c. WHERE 氏名 LIKE '%谷'
B木インデックスは辞書だと思ってください。辞書が速いのは、語の先頭から引けるときだけです。
- a「宮谷」と一致 → 辞書で「み」を引く。効く
- b「宮」で始まる → 「み」のページを開いて連続した範囲を読む。効く(前方一致)
- c「谷」で終わる → 先頭が分からないので辞書を1ページ目から全部めくるしかない。効かない
- d 範囲指定 → B木は値が順に並んでいるので、開始位置を見つけて並び順に辿れる。効く
つまり「前方一致と範囲は効く、中間一致・後方一致は効かない」。B木が「ハッシュではなく木」である意味はここにあります。ハッシュインデックスは等価比較(a)しか効かず、範囲(d)が効きません。
インデックスが効かない代表例はもう2つあり、まとめて1問になります。
| 条件 | なぜ効かないか |
|---|---|
WHERE 氏名 LIKE '%谷' | 先頭が不明で、並び順を使えない |
WHERE SUBSTR(氏名,2,1) = '谷' | 列を関数で加工すると、並んでいるのは加工前の値なので辿れない |
| 表の大半がヒットする条件 | 索引を経由するより全表走査のほうが速いと判断される |
最後の1行が実務でも試験でも効きます。インデックスは「少数を絞り込む」ときの道具で、8割が該当する条件には無力です。だから性別のように値の種類が少ない列に張っても意味がありません。
第3問 ネットワーク
1台の L2 スイッチに接続された PC 群を、物理的な配線を変えずに複数のブロードキャストドメインへ分割したい。用いる技術はどれか。
- リンクアグリゲーション
- VLAN
- スパニングツリープロトコル
- DHCP リレーエージェント
解答
b. VLAN
昨日の第4問で、この表を出しました。
| 装置 | ブロードキャストの扱い |
|---|---|
| L2 スイッチ | そのまま流す(=1つのブロードキャストドメイン) |
| ルータ・L3 スイッチ | 止める(=ここでドメインが分かれる) |
この表のままなら、ドメインを分けるにはルータを買って配線を分けるしかありません。それを配線ではなく設定でやるのが VLAN です。スイッチのポートごとに「このポートは VLAN 10、こちらは VLAN 20」と札を付け、異なる VLAN の間ではフレームを流さないようにします。結果、1台のスイッチが複数台のスイッチとして振る舞います。
試験で問われるのはこの先の2点です。
- VLAN 間の通信にはルータ(または L3 スイッチ)が要る。分けた以上、跨ぐには第3層の機器が必要です。これをVLAN 間ルーティングと呼びます
- スイッチを跨いで同じ VLAN を延ばすにはタグが要る。フレームに VLAN 番号の札を埋め込む規格が IEEE 802.1Q(タグ VLAN)で、複数 VLAN をまとめて通す回線をトランクポートと呼びます
他の選択肢も、どれもスイッチの実在機能なので区別しておきます。
| 技術 | 目的 |
|---|---|
| リンクアグリゲーション | 複数の回線を束ねて1本に見せる(帯域増加・冗長化) |
| スパニングツリー(STP) | ループになった経路を論理的に塞いでブロードキャストストームを防ぐ |
| DHCP リレーエージェント | 分かれたドメインを跨いで DHCP 要求を届ける(昨日の第4問) |
並べると、b が「分ける」、c が「事故を防ぐ」、d が「分けた後に跨ぐ」——ブロードキャストドメインという一本の軸に3つとも乗っています。ネットワークの午前問題は、この軸の上でほとんど回っています。