見出し画像

【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]。)


正規化の過去問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は全て無料提供を続けます▼ もしご覧になったNoteが有益だったり、私の志に共感されたりしましたら、サポート頂けますと励みになります▼ もちろんコメントでも結構です(・ω・▼)ノシ