FE EXAM

第1正規形(1NF)

繰返し項目を分離して各セルが単一値になるようにした正規形。

INTERACTIVE VISUALIZATION
繰返し項目
主キー
フェーズ
idle
繰返し項目
あり
状態
非正規形
シナリオ
ステップ1 / 5
STEP 1/5非正規形 — 1つのセルに複数の値これは正規化されていない「非正規形」の表です。1件の注文(注文番号)に対して、複数の商品名と数量が1つのセルに詰め込まれています。1つのマスに値が複数入っている状態を「繰返し項目」と呼びます。表計算ソフトでセルの中に改行で何個も値を書いてしまった状態をイメージしてください。
注文表(非正規形)
注文番号顧客名商品名数量
001佐藤りんご / みかん3 / 5
002鈴木ぶどう2
解説

📌
第1正規形とは

非正規形りんご/ みかん1セルに複数値第1正規形りんごみかん

第1正規形(1NF)とは、1つのマス(セル)の中に値が複数入った「繰返し項目」をなくし、すべてのセルがちょうど1つの値だけを持つようにした表のことです。正規化(=データの重複や矛盾をなくすために表を整理する作業)の出発点になります。

身近な例で考えると、表計算ソフトで1つのマスに改行を使って何個も値を書き込んでしまった状態を、1個ずつ別々の行に書き直すイメージです。こうすると「特定の商品だけ探す」「数量を合計する」といった操作が正しくできるようになります。

上のツールで▶ボタンを押すと、1つのセルに複数の値が入った非正規形の表が、行の分割によって1セル1値のきれいな表に変わっていく流れを確認できます。

✂️
繰返し項目の分離

001 りんご/みかん3/5001 りんご 3001 みかん 5

繰返し項目を分離する基本ルールは、「値の個数だけ行を増やす」ことです。1つのセルにN個の値があれば、その行をN行に展開します。

分離するときのポイントは次のとおりです。
繰返している列を縦に展開:「りんご / みかん」を、りんごの行とみかんの行に分ける
関連する値も一緒に分ける:商品名と数量はペアなので、対応をくずさず分割する
共通の値はコピー:注文番号や顧客名など、繰返していない列は各行に同じ値を複製する

上のツールのSTEP3で、注文番号001の「りんご / みかん」の1行が、りんごの行とみかんの行の2行に分かれ、注文番号と顧客名がコピーされる様子を確認できます。

🔢
適用手順

① 探す② 分割③ 主キー

非正規形の表を第1正規形にする手順は、次の3ステップで進めます。


① 繰返し項目を探す:1つのセルに値が複数入っている列を見つける
② 行に展開する:値の個数だけ行を増やし、共通の列はコピーして1セル1値にする
③ 主キーを決める:分割で同じ値が複数行に現れるため、行を一意に特定できる列の組(複合主キー)を主キーにする

例の表では、行分割により注文番号001が2行になるため、「注文番号 + 商品名」を主キーにします。主キー(=行を1つに定める列の組)が決まれば、第1正規形は完成です。なお1NFは正規化の最初の段階で、この後さらに第2・第3正規形へと整理を進めます。

💡
なぜ1セル1値が必要か

繰返しあり(問題)001りんご/みかん3/5「りんごだけ」を取り出せない1セル1値(解決)001 りんご 3001 みかん 5「りんごだけ」を正確に取り出せる

なぜ1セルに1つの値しか入れてはいけないのか。それは、1つのセルに複数の値を詰め込むと、コンピュータが値を正確に取り出せなくなるからです。

繰返し項目を放置すると、次のような問題が起きます。
検索ができない:「りんごを注文した人を全員探せ」という要求に、「りんご/みかん」とまとまったセルでは正確に応えられない
集計がずれる:数量を合計したくても、「3/5」というひとかたまりの値から数字を取り出す特別な処理が必要になる
更新が危険:「みかんだけ数量を変えたい」と思っても、セル全体を書き換えるしかなく、りんごの数量まで誤って消す可能性がある

身近な例で考えると、連絡先として「090-1234-5678 / 03-1234-5678」のように2つの電話番号を1マスに書いた名簿から、「携帯番号だけで一覧を作りたい」と言われても困る、という状況と同じです。1セルに1値を徹底することで、データを安全・確実に扱えるようになります。

🗺️
1NFは正規化の出発点

非正規形1NF2NF正規化は段階を踏む。1NFが土台になる

第1正規形(1NF)は、正規化(=データの重複や矛盾をなくすために表を整理していく作業)の第一段階です。1NFを満たしていない表は、その先の正規形(2NF・3NF)に進めません。

正規化の段階は次のように積み上がります。
非正規形:繰返し項目があり、1セルに複数値が入った状態
第1正規形(1NF):繰返し項目をなくし、1セル1値にした状態 ←このページの内容
第2正規形(2NF):さらに「主キーの一部だけで決まる列」を別の表に分けた状態

1NFは「表の形を整える」ステップです。まず繰返しをなくして、コンピュータがきちんと扱える形にする。それができて初めて、次のステップ(2NF)で「情報の重複をなくす」作業に進めます。1NFなしに2NFはない、2NFは1NFの上に成り立つという関係を押さえておきましょう。

練習問題

🎯
基本情報技術者 練習問題

Q1.第1正規形(1NF)の説明として最も適切なものはどれか。
A.繰返し項目を分離して各セルが単一の値になっている
B.部分関数従属が排除されている
C.推移関数従属が排除されている
D.主キーが必ず1つの列だけで構成される
Q2.次の非正規形の表を第1正規形にする操作として正しいものはどれか。「注文番号001、商品名=りんご/みかん、数量=3/5」
A.商品名と数量の列を削除する
B.値の個数だけ行を分け、各行を1セル1値にする
C.商品名と数量を1つの列にまとめる
D.注文番号を複数の列に分割する
Q3.行分割後、注文番号だけでは行を一意に特定できない場合の主キーとして適切なものはどれか。
A.顧客名だけ
B.数量だけ
C.注文番号 + 商品名の組み合わせ
D.主キーは不要

関連コンテンツ