見出し画像

【デスペ5問】正規形の定義(データーベーススペシャリスト)

このNoteにはデータベーススペシャリスト(デスペ)AMIIに出題される正規化・正規形の問題をまとめました。

正直データベース設計は、応用情報技術者試験(AP)までは何となく解けていたかもですが、部分関数従属・推移的関数従属、さらに第3正規形以降の形態について理論的に理解する必要があります。

大丈夫。私も同じでしたよ。デスペで初めて厳密に理解しました。

とはいえデータベースは第3正規形で留めるのが一般的。

第3以降は、キーワードだけ知っていれば問題ありません。

ただし第3正規形に例外知識が必要です。

第3正規形では主キーからの従属だけになっていると思っていましたが、実は違うのです。

また、推移的関数従属なのか迷うケースもあります。 この2つはAMIIで問われます。午後では問われないです(問われたら、ただでさえ難しいのに、ヤバすぎ)。


このNoteは、データベーススペシャリスト独学合格、IT専門学校の先生の経験を基に書いています。

それでは始めましょう!




講座:3段階


正規形・正規化を3段階で学習します。

  • 非~第3正規形, 第1~3正規化まど

  • 第3正規形までが持っている2つの性質

    • 情報無損失分解

    • 関数従属性保存

  • ボイス・コッド正規形~第5正規形



非~第3正規形, 第1~3正規化


第3正規形までは応用情報技術者試験までに出題されてきました。

正直何となく解けていた方もいらっしゃるでしょう(私がそうでした)。

デスペでは、従属性の違いをしっかり認識することから始めます。

  • 非正規形:繰り返し項目がある
    ↓ 第1正規化:繰り返し項目を排除

  • 第1正規形:部分関数従属がある
    ↓ 第2正規化:部分関数従属を排除

  • 第2正規形:部分関数従属がない(完全関数従属である)
           推移的関数従属がある
    ↓ 第3正規化:推移的関数従属を排除

  • 第3正規形:大方のデーターベースが目指す形


  • 繰り返し項目:1つの項目に複数の値が格納されている

  • 部分関数従属:「候補キーの一部」に従属した属性がある

    • 部分関数従属がないこと:完全関数従属

  • 推移的関数従属:「非候補キー」に従属した属性はある


  • 非正規形:繰り返し項目が残る

  • 第1正規形:部分的関数従属と推移的関数従属が残る

  • 第2正規形:推移的関数従属が残る

  • 第3正規形:大方のデーターベースが目指す形


非正規形は繰り返し項目で見分けられます。

繰り返し項目を単一値にするには行を分けるので、行を特定するために複合主キーにするしかありません。(または新しい主キーを1つ作り直すか)


複合主キーは、複数の項目が主キーになっているため、複合主キーを構成している項目に従属する「部分関数従属」があり得ます。

下図のように複合主キーが2つの項目から成れば、1つの項目に従属するかを考えます。部分関数従属があるなら、複合主キーの一部を主キーに設定した別表に分解します。

なお、主キーが1つなら、第1正規形は自動的に第2正規形になっています。

もし複合主キーが3つの項目なら、1つor2つの項目に従属した項目があるかもしれません。複合主キーが4つなら、1~3つの項目からの従属があるか探します。


主キー以外の項目に従属している「推移的関数従属」があると、また第2正規形です。主キー以外の項目を主キーに設定した別表に分解して、第3正規形を目指します。

なお、第2正規形にした時に、推移的関数従属がなければ、自動的に第3正規形になります。



第3正規形までが持っている2つの性質


データベース設計では第3正規形を目指すのが一般的です。

理由は、第3正規形までが「情報無損失分解」「関数従属性保存」を満たす最後の形態だからです。

  • 情報無損失分解:結合し直せば分解前の関係を復元できる分解

  • 関数従属性保存:分解後に分解前に持っていた従属関係を保つ



ボイス・コッド正規形~第5正規形


第3正規形以降も、ボイス・コッド, 第4, 第5正規形があります。

AMII対策として、特徴の用語だけを知っておきましょう。

  • ボイス・コッド正規形:自明な関数従属性がある

  • 第4正規形:自明な多値従属性がある

  • 第5正規形:自明な結合従属性がある

AMIIの用語問題では出題されますが、午後問題ではめったに出題されないので、実際にどんなデータ値なのかはテキストで見る程度でOKです。


最後に、正規形・正規化・性質を全てまとめます。




問題演習1


第2正規形から第3正規形になるための条件はどれか。

ア:部分従属性がない
イ:推移的関数従属性がない
ウ:属性の定義域が原子定義域である
エ:関数従属A→Bについて、Bは非キー属性である

データベーススペシャリスト 平成22年午前2問08より改変
データベーススペシャリスト 令和04年午前2問05より改変

正答はイ。

第3正規形には、部分関数従属と推移的関数従属がない状態です。

「第2正規形から第3正規形になる条件」、つまり第3正規化では、推移的関数従属を解消します。

  • ア:部分関数従属がないのは、第2正規形である条件です。

  • イ:正しい。推移的関数従属がないのは、第3正規形である条件です。

  • ウ:第1正規形である条件です。原子定義域とは、項目が単一値である(繰り返し項目ではない)ことです。

  • エ:ボイス・コッド正規形である条件です。正解には不要なので割愛します(今後も問われることはないので、理解する必要もありません)。



推移的関数従属の注意点


少し難しいので、消去法で正答します。

第3正規形であり得る関数従属はどれか。

ア:候補キーから繰り返し属性への関数従属
イ:候補キーから他の候補キーへの関数従属
ウ:候補キーの一部から非キー属性への関数従属
エ:非キー属性から非キー属性への関数従属

データベーススペシャリスト 平成26年午前2問06より改変
データベーススペシャリスト 平成31年午前2問08より改変

正答はイ。

  • ア:繰り返し属性への従属があると、非正規形です

  • イ:正しい。

  • ウ:候補キーの一部からの従属とは、部分関数従属なので、第1正規形です。

  • エ:非属性→非属性とは、推移的関数従属を指しているため、第2正規形です。

消去法でイと正答できます。

第3正規形は候補キー→候補キー、例えば「主キー→主キー」や「非主キー→主キー」など、主キーを特定する従属が残っていることがあります。



{A, B, C}の候補キーが{A, B}と{A, C}であり、{A, B}→CとC→Bの関数従属性があるとき、{A, B, C}はどこまで正規形されているか。

ア:第1正規形
イ:第2正規形
ウ:第3正規形
エ:ボイス・コッド正規形

データベーススペシャリスト 令和03年午前2問03より改変

正答はウ。

今回は下図の上の関係が書かれています。

第3正規形には「候補キー→候補キー」の従属が残っている場合があります。

まず、C→Bと非候補キーCから候補キーBへ戻っているので、エ「ボイス・コッド正規形」ではありません。

次に、候補キー{A, B}の時に、A単独やB単独に従属する関係は明記されてないため、部分関数従属はありません。よってア「第1正規形」ではありません。

最後に候補キー{A, B}を主キーとした時に、非キーCに従属した非キーはないので、推移的関数従属もありません。よって「第2正規形」ではなく、第3正規形と判断します。




問題演習2


情報無損失分解かつ関数従属性保存が成り立つものはどれか。なお、情報無分解とは結合によって元の関係が得られる分解を指す。

ア:第2正規形から第3正規形への変換
イ:第3正規形からボイス・コッド正規形への変換
ウ:非正規形から第1正規形への変換
エ:ボイス・コッド正規形から第4正規形への変換

データベーススペシャリスト 平成26年午前2問04より改変
データベーススペシャリスト 令和05年午前2問06より改変

正答はア。

一発でア「第3正規形」を引いてください。

  • 情報無損失分解:結合し直せば分解前の関係を復元できる分解

  • 関数従属性保存:分解後に分解前に持っていた従属関係を保っている

以上2つを満たしているのは、「第3正規形まで」。

よって第3正規形以降の、イ「ボイスコッド正規形」、エ「第4正規形」は誤り。またウの「第1正規形への変換(第1正規化)」は表を分解しないので誤りと判断。



第1正規形~第5正規形までの正規化について正しい記述はどれか。

ア:全ての正規化では、関数従属性が保存される
イ:全ての正規化では、情報無損失の分解である。なお、情報無分解とは結合によって元の関係が得られる分解を指す。
ウ:第3正規形までは、情報無損失・関数従属性保存の分解である
エ:第4正規形から第5正規形への正規化では、多値従属性が保存される。

データベーススペシャリスト 平成28年午前2問08より改変
データベーススペシャリスト 平成31年午前2問07より改変
データベーススペシャリスト 令和03年午前2問05より改変

正答はウ。

  • ア:関数従属性保存は第3正規形まで。「全て」ではない。

  • イ:情報無損失分解は第3正規形まで。「全て」ではない。

  • ウ:正しい。

  • エ:多値従属性は第4正規形までは保たれます。



まとめ


お疲れ様でした!


以下2つの図を、学習ノートに書き出したり、スマホにダウンロードしておくと良いかなと思います。


私が合格してきた勉強法についてもNoteにしました。

まずは書籍の読み倒し方、AMIIの勉強だけでも参考にして頂ければ、嬉しいです。

p.s. 普段は >> 専門学校とIT就職のブログ << をやってます。

でわでわ(・ω・▼)ノシ


この記事が参加している募集

学習方法・問題特集のNoteは全て無料提供を続けます▼ もしご覧になったNoteが有益だったり、私の志に共感されたりしましたら、サポート頂けますと励みになります▼ もちろんコメントでも結構です(・ω・▼)ノシ