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

【Iパス4問を図解解説】正規化問題は「実データ」を考えて解く

    正規化はデータベース設計で行う作業です。

    全てのデータを一つの表にぶちこむと、生年月日や氏名など変わらないデータと毎回書き込む必要がありますし、もし氏名が変更されたら全部の行を変更する必要があります。

    よって、表を適切に分割します。

    本当は「第一~第三正規形」や「2つの関数従属性」の理解が必要ですが、正直基本情報技術者ぐらいまでは【感覚】で大丈夫ですよ。

    このNoteでは、正規化が正しいかのチェックをたった2点

    • 外部キーが参照先表の主キーを指しているか

    • 実際のデータを入れて不都合がないか

    に絞って解いていきます。

    ITパスポートのデータベース問題対策は以下で構成しています。Part4までは用語問題なので、頑張りましょう。


    なお、このNoteは私が専門学校で教えてきた指導経験と970点合格をした実績に基づいていますので、ちょっとでも信用してくれたら嬉しいです。

    \全てのNoteへのリンク集/


    E-R図の過去問 | データベース設計

    E-R図は、実体(エンティティ, E)と実体間の関係(リレーション, R)を図示したものです。IT資格ではデータベースの設計でよく見ます。

    今のところ、エンティティ(四角形)を表と思って大丈夫です。(厳密には違いますが、データベーススペシャリストまで気にしないでOK。表を設計する時の参考に必ず使います。)

    ITパスポート・基本情報技術者・応用情報技術者では、個数対応を問う問題が出ます。関係は2つです。

    • 1対1:リレーションは「ー」で図示

    • 1対多:リレーションは「→」で図示

    多の方に矢尻「>」がつきます。多対1なら「←」。


    では問題演習をしましょう。ITパスポートでは令和5~元年度までに1度しか出てませんが、基本情報技術者では必要なので今のうちに。

    画像
    「ITパスポート試験 令和3年度問70」より

    正答はア。

    リレーション「ー」「→」「←」を一気には決めません。左右別々に決めていきます。

    あるエンティティを1個にして、相手エンティティを見たら何個対応してそうか、を考えます。その後に、今度は相手エンティティを1個にして、自分が何個対応しているかを見て決めます。 

    画像

    1つコツがあります。

    多対多「⇔」は、考えなくてOK。

    難しい話ですが、多対多はデータベースでは避けるべきことだから。(多対多の中間に連関エンティティを新設して1対多と多対1に分割します。[E]→[連関E]←[E]。)>【デスペ】ER図のNote(連関E)

    画像
    >【デスペ】ER図のNote(連関E)




    正規化の過去問1 | 外部キーの確認

    まず一番簡単な「外部キーの確認」だけで解ける問題です。

    外部キーが参照先表の主キーを指していればOK。

    画像
    「ITパスポート試験 令和5年度問59」より

    正答はエ。

    まず、何となく以下のことが分かりませんか? ここで「~コード」「~番号」「~ID」は主キーになるだろうなぁと「アタリ」を付けてもOKです。

    画像

    あとは、矢印の根本を主キーにして表を作っていきます。

    ただし、外部キーになる項目を残し、別表の主キーを指しているようにします。

    画像




    正規化の過去問2 | 実際のデータを考えて解く

    次は、確認ポイントを1点増やして解く問題いきます。

    • 外部キーが別表の主キーを参照しているか

    • 実際のデータを考えて、使用に不都合がでないか

    画像
    「ITパスポート試験 平成30年度春問81」より


    正答はア。

    選択肢を一つずつ見ていきますね。

    まずは正解のア。

    画像
    • 顧客名と住所は早々変わらないし

    • 商品名と単価も早々変わらないし

    • 注文個数と注文日は、注文ごとに違うよな

    と思えればOKです。
    (なお、データベーススペシャリストレベルの話ですが。単価がころころ変動するガソリンの場合は、注文表に単価を置いた方が良いです。)


    画像

    選択肢に顧客番号と商品番号に下線があるので主キーです。よって参照先の列が主キーではないので誤り。

    とはいえ、顧客名と商品名が主キーだったらワンチャンOK。ただし、同姓同名の顧客、全く同名の商品の登録はできません。


    画像

    イと同じで外部キーが主キーを指していないのでダメ。

    また日付は注文表(下)に欲しいですね。毎回の注文での日付を記録したいですから。

    なお、顧客表(上)に日付を書く時は「最新購入日」など、「最近購入してくれてないお客さん」を探したいなどの目的で設置することはあります。


    画像

    外部キーはOK。他に3点もツッコミ所がありますね。


    最後の問題も、外部キーと実データチェックで解けます。

    画像
    「ITパスポート試験 平成29年度春問69」より

    正答はア。 一つずつ見ていきましょう。


    アの右表。3つの列からなる複合主キーです。珍しいです。

    誰が、どの試験を、いつ受けて、合否どうだった?なので。

    画像


    ウの右は、同じ試験を複数回受験した時に不具合がでます。

    画像



    ウの左表に対して、エの左表は社員IDと試験日を複合主キーして一意性は確保してるのでまだOK。しかし、どの試験種別を受験したかが分かりません。

    画像




    まとめ | 正規化を生かせば結合問題も解ける

    今回は3点学びました。

    • E-R図の個数対応は片方ずつ、1個に固定して決めていく

    • 外部キーが別表の主キーを参照しているか

    • 実際のデータを考えて、使用に不都合がでないか

    次は正規化(表の分割)と結合。逆手順なのですぐに解けるようになりますよ。

    \全てのNoteへのリンク集/

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

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


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

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