2026年版・3-3

正規化と関係代数の一問一答

基本情報技術者試験 科目A「技術要素」から、正規化と関係代数に関する4択問題を10問。「答えと解説を見る」を開くと、正解とその理由がその場で読めます。会員登録は不要です。

この分野の演習

全10問/解説つき・基本無料

アプリ形式で解く(全600問) 技術要素の要点解説を読む
問題

上から順に解いてみてください。答えは各問の下で確認できます。科目Aの本試験と同じく、4択で出題しています。

問13-3

関係データベースの第1正規形の説明として、最も適切なものはどれか。

  • ①主キー以外の項目どうしの間に、関数従属の関係が存在しない
  • ②主キーの一部だけに関数従属する項目が、表に含まれていない
  • ③全ての項目が、他の表の主キーを参照する外部キーになっている
  • ④繰返し項目がなく、全ての項目がそれぞれ単一の値になっている
答えと解説を見る
正解 ④繰返し項目がなく、全ての項目がそれぞれ単一の値になっている
解説
第1正規形は、表の全ての項目(列)の値が単一の値(それ以上分けられない値)で、1つの項目に複数の値が入る繰返し項目がない状態です。例えば「電話番号」の欄に複数の番号を並べて入れている表は、第1正規形ではありません。

他の選択肢が不適切な理由
・主キーの一部だけに関数従属する項目がない:第2正規形の条件(部分関数従属の排除)です。
・主キー以外の項目どうしに関数従属がない:第3正規形の条件(推移的関数従属の排除)です。
・全ての項目が外部キー:正規形の条件ではありません。

覚え方のポイント
「第1=繰返しをなくす」「第2=部分関数従属をなくす」「第3=推移的関数従属をなくす」。正規化は第1から順に進めます。
問23-3

次の受注明細表(主キーは受注番号と商品番号の組)は、どの正規形まで満たしているか。なお、商品名は商品番号だけで決まり、数量は受注番号と商品番号の組で決まる。

受注番号商品番号商品名数量
1001A01ボールペン10
1001B05ノート5
1002A01ボールペン3

  • ①第2正規形
  • ②第3正規形
  • ③第1正規形
  • ④非正規形
答えと解説を見る
正解 ③第1正規形
解説
この表には繰返し項目がなく、各項目の値は単一なので、第1正規形は満たしています。
しかし、商品名は主キーの一部である商品番号だけで決まります(部分関数従属)。第2正規形は部分関数従属がない状態なので、この表は第2正規形を満たしていません。したがって、満たしているのは第1正規形までです。
第2正規形にするには、商品番号と商品名を別の「商品表」に分けます。

他の選択肢が不適切な理由
・第2正規形:商品名が商品番号だけに部分関数従属しているため、満たしていません。
・第3正規形:第2正規形を満たしていないので、第3正規形も満たしません。
・非正規形:繰返し項目がないので、第1正規形は満たしています。

覚え方のポイント
主キーが複数の列の組合せのときは、「主キーの一部だけで決まる項目はないか」を必ず確認しましょう。あれば第2正規形ではありません。
問33-3

主キーを社員番号とする社員表(社員番号、氏名、部門コード、部門名)がある。部門名は部門コードによって決まる。この表を第3正規形にするための方法として、最も適切なものはどれか。

  • ①社員番号と部門コードを組み合わせて、新しい主キーとする
  • ②部門コードと部門名を部門表に分け、社員表に部門コードを残す
  • ③部門名の列を、部門ごとに横に並べた複数の列に分けて持たせる
  • ④氏名と部門名を1つの列にまとめて、表の列の数を減らす
答えと解説を見る
正解 ②部門コードと部門名を部門表に分け、社員表に部門コードを残す
解説
社員表では、社員番号 → 部門コード → 部門名 という関数従属があります。主キー以外の項目(部門コード)によって別の項目(部門名)が決まる関係を推移的関数従属といい、第3正規形では、これを取り除く必要があります。部門コードと部門名を別の「部門表」に分け、社員表には部門コードを外部キーとして残せば、第3正規形になります。部門名を変更するときも、部門表の1か所を直すだけで済みます。

他の選択肢が不適切な理由
・社員番号と部門コードを主キーにする:推移的関数従属は解消されず、部分関数従属まで生じてしまいます。
・部門名を横に並べた複数の列に分ける:繰返し項目になり、第1正規形からも外れます。
・氏名と部門名を1つの列にまとめる:値が単一でなくなり、第1正規形を満たさなくなります。

覚え方のポイント
「主キー以外の項目が、別の項目を決めている」ときは推移的関数従属。決めている項目(部門コード)を主キーとする表に切り出すのが第3正規化です。
問43-3

関係データベースにおいて、項目Aの値が決まると項目Bの値が1つに決まる関係を何というか。

  • ①関数従属
  • ②参照制約
  • ③多対多の関連
  • ④カーディナリティ
答えと解説を見る
正解 ①関数従属
解説
関数従属は、ある項目Aの値が決まれば、別の項目Bの値がただ1つに決まる関係で、「A → B」と表します。例えば、社員番号が決まれば氏名が1つに決まるので、「社員番号 → 氏名」という関数従属があります。正規化は、この関数従属の関係をもとに表を分割していく作業です。

他の選択肢が不適切な理由
・参照制約:外部キーの値が、参照先の表の主キーに存在することを保証する制約です。
・多対多の関連:一方から見ても他方から見ても、複数の相手と関係する関連です。
・カーディナリティ:関連の多重度(1対1、1対多、多対多など)や、表の行の数を表す用語です。

覚え方のポイント
「A → B(AがBを決める)」。正規化の問題は、表の項目どうしの関数従属を矢印で書き出すと、どこで分割すればよいかが見えてきます。
問53-3

関係代数の演算のうち、表から指定した条件を満たす行だけを取り出す演算はどれか。

  • ①選択
  • ②射影
  • ③結合
  • ④直積
答えと解説を見る
正解 ①選択
解説
関係代数は、関係データベースの表(関係)を操作するための演算の体系です。
・選択:条件を満たす行を取り出す(SQLのWHERE句に相当)
・射影:指定した列を取り出す(SQLのSELECT句で列を指定することに相当)
・結合:2つの表を、共通の列の値で結び付けて1つの表にする
・直積:2つの表の行の全ての組合せを作る

他の選択肢が不適切な理由
・射影:行ではなく、指定した列を取り出す演算です。
・結合:2つの表をつなぐ演算です。
・直積:2つの表の行の全ての組合せを作る演算です。

覚え方のポイント
「選択=行(横)を選ぶ」「射影=列(縦)を選ぶ」。射影は、表に横から光を当てて列の影を映す、とイメージすると覚えやすくなります。
問63-3

関係代数の演算のうち、表から指定した列だけを取り出す演算はどれか。

  • ①選択
  • ②和
  • ③差
  • ④射影
答えと解説を見る
正解 ④射影
解説
射影は、表から指定した列(属性)だけを取り出して、新しい表を作る演算です。取り出した結果に同じ行が複数できた場合、関係代数では重複を1つにまとめます。SQLでは、SELECTのあとに列名を指定することで射影を行います。

他の選択肢が不適切な理由
・選択:条件を満たす行を取り出す演算です。
・和:2つの表の行を合わせて、どちらかに含まれる行全てからなる表を作る集合演算です。
・差:一方の表にあって、もう一方の表にない行を取り出す集合演算です。

覚え方のポイント
「選択=行」「射影=列」。この2つは試験で必ず区別を問われるので、一言ずつで即答できるようにしておきましょう。
問73-3

次の2つの表について、関係代数の差「表A − 表B」を求めた結果に含まれる行はどれか。

表A(会員番号)
101
102
103
表B(会員番号)
102
104

  • ①104だけ
  • ②102だけ
  • ③101と103
  • ④101、102、103、104
答えと解説を見る
正解 ③101と103
解説
差「A − B」は、表Aに含まれていて、表Bには含まれていない行を取り出す演算です。
表Aの行:101、102、103
このうち、表Bにもある102を除くと、101と103が残ります。

他の選択肢が不適切な理由
・102だけ:両方の表に含まれる行を取り出す「積(共通部分)」の結果です。
・104だけ:「B − A」(表Bにあって表Aにない行)の結果です。
・101、102、103、104:どちらかに含まれる行を全て取り出す「和」の結果です。

覚え方のポイント
「和=どちらかにある」「積=両方にある」「差(A−B)=Aだけにある」。ベン図を描いて、どの部分を塗るかを確かめると確実です。
問83-3

関係代数の結合(等結合)の説明として、最も適切なものはどれか。

  • ①2つの表の全ての行の組合せを作り、行の数がそれぞれの行数の積になる表にする
  • ②2つの表を、共通する列の値が等しい行どうしで結び付けて1つの表にする
  • ③2つの表のどちらかに含まれる行を、重複を除いて全て集めた表にする
  • ④1つの表から、指定した条件を満たす行だけを取り出して新しい表にする
答えと解説を見る
正解 ②2つの表を、共通する列の値が等しい行どうしで結び付けて1つの表にする
解説
結合は、2つの表を、共通する列(例えば、注文表の顧客番号と顧客表の顧客番号)の値が等しい行どうしで結び付け、1つの表にする演算です。例えば、注文表と顧客表を顧客番号で結合すれば、注文ごとに顧客の氏名や住所も一緒に表示できます。SQLでは、JOINやWHERE句の条件で結合を行います。

他の選択肢が不適切な理由
・全ての行の組合せを作る:直積の説明です。
・どちらかに含まれる行を全て集める:和の説明です。
・条件を満たす行だけを取り出す:選択の説明です。

覚え方のポイント
結合は「直積(全ての組合せ)を作ってから、共通の列が等しいものだけを選択する」と考えることもできます。正規化で分けた表を、使うときに元のようにつなぎ直すのが結合です。
問93-3

正規化を行う目的として、最も適切なものはどれか。

  • ①データを1つの表にまとめ、結合を行わずに検索できるようにする
  • ②データの重複をなくし、更新したときの不整合を起こりにくくする
  • ③データを暗号化して、第三者による不正な閲覧を防ぐ
  • ④データの圧縮率を高めて、記憶装置の容量を大幅に減らす
答えと解説を見る
正解 ②データの重複をなくし、更新したときの不整合を起こりにくくする
解説
正規化の目的は、表の中でのデータの重複を取り除き、1つの事実を1か所で管理することで、データを追加・更新・削除したときに矛盾(更新時異常)が起きにくいデータベースにすることです。例えば、社員表に部門名を持っていると、部門名を変えるときに全社員の行を直す必要があり、直し漏れがあると不整合が起きます。

他の選択肢が不適切な理由
・1つの表にまとめ、結合せずに検索:正規化とは逆の考え方(非正規化)です。検索を速くするために、あえて非正規化することもあります。
・暗号化して不正な閲覧を防ぐ:セキュリティ対策の説明です。
・圧縮率を高めて容量を大幅に減らす:正規化で重複は減りますが、目的は整合性の確保であり、データの圧縮ではありません。

覚え方のポイント
「正規化=1つの事実は1か所に」。重複をなくすことで、更新の手間と矛盾を減らすのが目的です。
問103-3

第3正規形の表について、最も適切な記述はどれか。

  • ①第2正規形を満たし、かつ推移的関数従属が存在しない
  • ②繰返し項目は含むが、部分関数従属は存在しない
  • ③主キーを持たないため、全ての項目が同等に扱われる
  • ④第1正規形の条件だけを満たし、部分関数従属は残っている
答えと解説を見る
正解 ①第2正規形を満たし、かつ推移的関数従属が存在しない
解説
正規形は段階的になっていて、上位の正規形は下位の正規形の条件をすべて含みます。第3正規形は、第2正規形の条件(第1正規形であり、部分関数従属がない)を満たしたうえで、さらに主キー以外の項目の間に関数従属がない、つまり推移的関数従属が存在しない状態です。

他の選択肢が不適切な理由
・繰返し項目を含む:繰返し項目があれば、第1正規形すら満たしません。
・主キーを持たない:関係データベースの表は、行を一意に特定するための主キーを持つのが前提です。
・部分関数従属が残っている:部分関数従属があれば、第2正規形を満たしません。

覚え方のポイント
「第3正規形=第1(繰返しなし)+第2(部分関数従属なし)+推移的関数従属なし」。段階を積み上げていく関係であることを押さえましょう。

基本情報技術者(科目A)の対策問題(全600問)に戻る

非公式の資格試験対策サイトです。独立行政法人情報処理推進機構(IPA)とは一切関係ありません。

※本ページでは、アクセス解析(Googleアナリティクス)と、広告の配信・成果の計測(A8.net)のためにCookie等を利用し、閲覧に関する情報をGoogle LLC・株式会社ファンコミュニケーションズへ送信しています。詳しくはプライバシーポリシーをご覧ください。

※本ページの問題・解説は、生成AI(人工知能)を活用して作成しています。

【PR】