基本情報の正規化の解き方|第1〜第3正規形の見分け方

基本情報の正規化を学ぶためのデータベース学習風景

基本情報の正規化は、データベース分野の中でも「表をどう分ければよいのか」が見えにくく、苦手意識を持ちやすい単元です。第1正規形、第2正規形、第3正規形という名前は覚えたのに、問題になるとどこから手を付ければよいか迷う人も多いかなと思います。

ただ、正規化は丸暗記だけで解く分野ではありません。見る順番を固定して、主キーから何が決まるかを落ち着いて追えば、選択肢をかなり絞れるようになります。この記事では、基本情報の正規化の解き方を、初学者向けに第1正規形から第3正規形まで順番に整理します。

この記事のポイント
  • 正規化はデータの重複と更新ミスを減らす考え方
  • 第1〜第3正規形は見る順番を固定すると迷いにくい
  • 関数従属は主キーから何が決まるかで判断する
  • 本番では定義暗記より表を分ける練習が重要
無料

基本情報技術者試験 過去問アプリ

本番形式で繰り返し解ける。スキマ時間に1問から

2,000問以上収録
無料で過去問を解く
目次

基本情報の正規化の基本

正規化の基本と第1正規形から第3正規形の学習イメージ

正規化とは何か

正規化とは、関係データベースの表を整理して、データの重複や矛盾を減らすための考え方です。最初からきれいな表を作るというより、1つの大きな表に詰め込まれている項目を見ながら、「この項目は本当に同じ表に置くべきか」を確認していく作業だと考えるとわかりやすいですね。

たとえば、注文表の中に商品名、商品単価、顧客名、顧客住所、注文数量が全部入っているとします。同じ商品が何度も注文されれば、商品名や単価が何行にも重複します。もし単価を変更する必要が出たとき、一部の行だけ更新し忘れると、同じ商品なのに単価が違うという矛盾が起きます。正規化は、このような更新ミスを起こしにくい形に表を分けるための整理術です。

基本情報では、正規化を「表を細かく分けること」とだけ覚えるより、「重複・更新漏れ・削除時の困りごとを減らすために表を分けること」と理解した方が問題文を読みやすくなります。

状態起きやすい問題正規化で見る点
1つの表に詰め込みすぎ同じデータが何度も出る重複している項目がないか
主キーと関係が薄い項目がある更新漏れが起きる何によって決まる項目か
別の項目から決まる項目がある矛盾した値が混ざる主キー以外の従属関係がないか

SQLやデータベース全体の基本から復習したい場合は、基本情報技術者試験のSQL・データベース問題の解説も合わせて読むと、正規化がどの位置づけの知識なのかつかみやすくなります。

試験で問われる理由

基本情報で正規化が問われるのは、データベースを安全に使うための土台だからです。試験では、実務で巨大なデータベースを設計するような深い内容まで求められるわけではありません。むしろ、主キー、外部キー、関数従属、部分関数従属、推移的関数従属といった基本用語を使って、表の問題点を説明できるかが見られます。

IPAの基本情報技術者試験シラバスでも、正規化の目的と手順、第1正規形、第2正規形、第3正規形を理解することが範囲に含まれています。つまり、用語を知っているだけではなく、「どの段階で何を取り除くのか」まで押さえておく必要があります。

正規化の問題は、長い計算をするというより、表の中にある依存関係を見つける問題です。選択肢の文章が難しく見えても、聞かれていることは「繰り返し」「部分関数従属」「推移的関数従属」のどれかに寄ることが多いです。

  • 第1正規形は、1つのマスに複数の値が入っていないかを見る
  • 第2正規形は、複合主キーの一部だけで決まる項目がないかを見る
  • 第3正規形は、主キー以外の項目から決まる項目がないかを見る

この3つの見方を混ぜて覚えると、正規化の段階を選ぶ問題で迷いやすくなります。逆に、段階ごとのチェックポイントを固定しておけば、「これは第2正規形ではない」「これは第3正規形にするための分解だ」と判断しやすくなります。

第1正規形の見分け方

第1正規形は、正規化の最初の段階です。基本情報では「繰り返し項目をなくす」「各属性値を単一値にする」と覚えておくと扱いやすいです。難しい言葉に見えますが、要するに1つのセルの中に複数の商品名や複数の電話番号のような値がまとめて入っていないかを確認します。

たとえば、注文番号1つに対して、商品A、商品B、商品Cが横並びで入っている表を考えます。この形だと、商品が4個になったら列を増やす必要がありますし、商品ごとの数量や単価をきれいに扱いにくくなります。第1正規形では、このような繰り返しを行として分け、1つの項目には1つの値だけが入るようにします。

第1正規形で見るのは、主キーの一部で決まるかどうかではありません。まずは「表として扱える形になっているか」「1つの欄に値を詰め込んでいないか」を確認します。

見る場所第1正規形での判断
1つのセル複数の値が入っていれば整理が必要
商品1、商品2のような列繰り返し項目として疑う
同じ種類の情報行に分けられないかを考える

試験では、第1正規形そのものを細かく作図させるより、選択肢の中で「繰り返しを排除した」という説明がどの正規化に対応するかを問う形が出やすいです。正規化のスタート地点として、まず繰り返しを消す段階だと覚えておきましょう。

第2正規形の見分け方

第2正規形は、第1正規形を満たしたうえで、部分関数従属をなくした状態です。ここで急に難しく感じる人が多いのは、「部分関数従属」という言葉が抽象的だからですね。基本情報では、複合主キーの一部だけで決まってしまう項目がないか、と言い換えるとかなり楽になります。

たとえば、注文番号と商品番号の組み合わせで1行が決まる注文明細表があるとします。この表に商品名が入っている場合、商品名は注文番号と商品番号の両方がなくても、商品番号だけで決まります。つまり、複合主キーの一部である商品番号に引っ張られている項目です。このような項目は商品表に分ける、というのが第2正規形の考え方です。

第2正規形を判断するときは、最初に主キーが単独キーか複合キーかを確認します。単独キーだけの表では、基本情報レベルでは部分関数従属を疑う場面は少なくなります。

第2正規形の合図

問題文に「主キーの一部」「複合主キー」「一部の項目だけで決まる」といった表現が出たら、第2正規形や部分関数従属を疑います。

注意したいのは、第2正規形は「何でも表を分ける」段階ではないことです。あくまで、複合主キーの一部だけで決まる非キー項目を外に出す段階です。注文数量のように、注文番号と商品番号の両方があって初めて決まる項目は、注文明細表に残ると考えます。

第3正規形の見分け方

第3正規形は、第2正規形を満たしたうえで、推移的関数従属をなくした状態です。推移的関数従属とは、主キーから直接決まるのではなく、主キー以外の項目を経由して別の項目が決まる関係です。ここも言葉だけで覚えると難しいので、「主キー以外の項目が、別の項目を決めていないか」と考えるのが実戦向きです。

たとえば、社員番号で社員名と部署番号が決まり、部署番号で部署名が決まる表を考えます。このとき、部署名は社員番号から見れば間接的に決まりますが、実際には部署番号によって決まる情報です。部署番号と部署名は部署表に分け、社員表には部署番号を残すと、部署名の更新漏れを防ぎやすくなります。

第3正規形では、主キー以外の項目同士の関係を見落としやすいです。主キーから矢印を引くだけで終わらせず、非キー項目から別の非キー項目へ矢印が引けないかを確認しましょう。

正規形取り除くもの合図
第1正規形繰り返し項目商品1、商品2のような並び
第2正規形部分関数従属主キーの一部だけで決まる
第3正規形推移的関数従属主キー以外から決まる

基本情報の正規化問題では、第2正規形と第3正規形の違いが特に混ざりやすいです。複合主キーの一部に注目しているなら第2正規形、主キー以外の項目同士の関係に注目しているなら第3正規形、と切り分けると判断が安定します。

基本情報の正規化の解き方

基本情報の正規化問題で表を分ける解き方のイメージ

問題文の読み取り方

正規化の問題を解くときは、いきなり選択肢を読むより、表の構造を先に確認した方が安定します。最初に見るのは、表の項目名、主キー、同じ意味の項目が繰り返されていないかです。問題によっては下線や説明文で主キーが示されているので、そこを見落とさないようにします。

次に、主キーから各項目へ矢印を引くつもりで読みます。注文番号が決まると注文日が決まる、商品番号が決まると商品名が決まる、部署番号が決まると部署名が決まる、というように、何が何を決めているのかを言葉にしていきます。この段階で、どの項目を別表に分けるべきかが見えてきます。

STEP
主キーを確認する

単独キーか複合キーかを先に見ると、第2正規形の判断がしやすくなります。

STEP
決まる項目を探す

主キー、主キーの一部、非キー項目から何が決まるかを順番に確認します。

STEP
別表にする項目を選ぶ

同じ関係でまとまる項目を切り出し、元の表には外部キーとして残します。

ER図や多重度の読み方も絡む問題では、表をどう分けるかだけでなく、分けた表同士がどうつながるかも重要です。関連の見方が不安な場合は、基本情報のER図で主キーと多重度を読む方法も確認しておくと、正規化後の表の関係をイメージしやすくなります。

関数従属の探し方

関数従属は、ある項目の値が決まると、別の項目の値も一意に決まる関係です。基本情報では、専門的な証明をするというより、表の意味から自然に決まる関係を読み取れれば十分です。たとえば、商品番号が決まれば商品名が決まる、部署番号が決まれば部署名が決まる、社員番号が決まれば社員名が決まる、といった関係ですね。

探すときのコツは、「この項目だけを見れば、毎回同じ値になるか」と自分に質問することです。商品番号P001に対して商品名が毎回同じなら、商品名は商品番号に従属していると考えられます。一方、注文番号だけでは注文内のどの商品行かまでは決まらない場合、注文番号だけで注文数量が決まるとは言えません。

正規化問題の関数従属を確認する学習イメージ

関数従属は矢印で考えると楽です。商品番号 → 商品名、部署番号 → 部署名のように、左側が決まると右側が決まる関係を見つけます。

  • 主キー全体から決まる項目は完全関数従属
  • 複合主キーの一部から決まる項目は部分関数従属
  • 主キー以外の項目から決まる項目は推移的関数従属

この3種類を名前だけで覚えると混乱しますが、「主キー全体」「主キーの一部」「主キー以外」という見る場所で分ければシンプルです。試験中は、選択肢を読む前に表の横に小さく矢印をメモするつもりで考えると、言葉に振り回されにくくなります。

表を分ける判断基準

表を分けるときの判断基準は、同じ原因で決まる項目をひとまとまりにすることです。商品番号で商品名と単価が決まるなら、商品番号、商品名、単価を商品表として分けます。部署番号で部署名が決まるなら、部署番号と部署名を部署表として分けます。元の表には、分けた表を参照するための番号だけを残します。

ここで大事なのは、値そのものを消すのではなく、置き場所を変えるという感覚です。注文明細から商品名を外しても、商品番号を残して商品表とつなげば、必要なときに商品名を参照できます。正規化は情報を失う作業ではなく、情報の保管場所を整理する作業です。

見つけた関係分ける表の例元の表に残すもの
商品番号で商品名が決まる商品表商品番号
部署番号で部署名が決まる部署表部署番号
顧客番号で顧客名が決まる顧客表顧客番号

別表に分けたあとは、元の表に外部キーとして番号を残すと考えます。商品名を直接持たず、商品番号で商品表を見る形にすると、重複と更新漏れを減らせます。

基本情報の選択肢では、「どの表にどの項目を置くか」が問われることがあります。その場合は、項目名のまとまりだけで選ぶのではなく、何によって決まる項目なのかを基準にしてください。商品名と単価は商品番号で決まる、注文数量は注文番号と商品番号の組み合わせで決まる、というように判断すると、表の切り分けがぶれにくくなります。

過去問演習の進め方

正規化は、解説を読んだ直後はわかった気になりやすい一方で、別の表になるとまた迷いやすい分野です。だからこそ、過去問演習では正解番号だけを覚えるのではなく、どの項目がどの項目に従属しているのかを毎回言葉にすることが大切です。最初は時間がかかっても、矢印を引く練習をした方が本番で安定します。

演習の順番としては、まず正規化の定義問題で第1、第2、第3の違いを確認し、次に具体的な表を分ける問題へ進むのがおすすめです。いきなり複雑な過去問だけを解くと、主キー、外部キー、関数従属、表の分割を同時に処理することになり、どこで間違えたのかが見えにくくなります。

  • 解説を読む前に主キーを自分で確認する
  • 関数従属の矢印を3本以上書き出す
  • 第2正規形と第3正規形の違いを説明する
  • 表を分けた後に外部キーが残るか確認する

正規化の復習では、1問を速く解くより、1問の解説を使って「なぜその表に分けるのか」を説明できる状態にする方が効果的です。

SQLのSELECT文やJOINの問題と合わせて演習したい場合は、基本情報のSQL問題の解き方を例題で攻略する記事も使えます。正規化で表を分ける理由がわかると、JOINで複数表を結びつける感覚もつかみやすくなります。

正規化対策のまとめ

基本情報の正規化は、難しい専門用語が多いわりに、問われる軸はかなり決まっています。第1正規形は繰り返しをなくす、第2正規形は複合主キーの一部で決まる項目を分ける、第3正規形は主キー以外の項目から決まる項目を分ける。この3つを順番に見れば、正規化の問題はかなり整理しやすくなります。

勉強するときは、定義を一度読んで終わりにしないことが重要です。表を見たら主キーを確認し、主キー全体、主キーの一部、主キー以外のどこから項目が決まるのかを考えます。慣れてきたら、問題文を読むだけで「これは部分関数従属だな」「これは推移的関数従属だな」と分類できるようになります。

正規化の覚え方

第1は繰り返し、第2は主キーの一部、第3は主キー以外。この順番で表を点検すると、基本情報の正規化の解き方がかなりシンプルになります。

  • 第1正規形はセルや列の繰り返しを見る
  • 第2正規形は複合主キーの一部を見る
  • 第3正規形は非キー項目同士の関係を見る
  • 最後は表を分けても情報がつながるか確認する

最初は抽象的に感じても、正規化は慣れるほどパターン化できます。次に過去問を解くときは、いきなり答えを探すのではなく、表の横に矢印を引くつもりで関数従属を確認してみてください。それだけでも、選択肢の見え方が変わってくるはずです。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする

目次