メインコンテンツへスキップ
見出し画像

【デスペ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。 学生時代にITパスポート試験・基本情報技術者試験・応用情報技術者試験を独学で高得点合格。情報処理安全確保支援士試験(セキスペ)・データベーススペシャリスト試験・ネットワークスペシャリスト試験・G検定なども取得。 2027年にPD-S受験予定。