【Iパス4問を図解解説】正規化問題は「実データ」を考えて解く
正規化はデータベース設計で行う作業です。
全てのデータを一つの表にぶちこむと、生年月日や氏名など変わらないデータと毎回書き込む必要がありますし、もし氏名が変更されたら全部の行を変更する必要があります。
よって、表を適切に分割します。
本当は「第一~第三正規形」や「2つの関数従属性」の理解が必要ですが、正直基本情報技術者ぐらいまでは感覚で大丈夫ですよ。
このNoteでは、正規化が正しいかのチェックをたった2点
外部キーが参照先表の主キーを指しているか
実際のデータを入れて不都合がないか
に絞って解いていきます。
ITパスポートのデータベース問題対策は以下で構成しています。Part4までは用語問題なので、頑張りましょう。
>>正規化の演習問題対策Note<< ←今ここ
なお、このNoteは私が専門学校で教えてきた指導経験と970点合格をした実績に基づいていますので、ちょっとでも信用してくれたら嬉しいです。
\全てのNoteへのリンク集/
E-R図の過去問 | データベース設計
E-R図は、実体(エンティティ, E)と実体間の関係(リレーション, R)を図示したものです。IT資格ではデータベースの設計でよく見ます。
今のところ、エンティティ(四角形)を表と思って大丈夫です。(厳密には違いますが、データベーススペシャリストまで気にしないでOK。表を設計する時の参考に必ず使います。)
ITパスポート・基本情報技術者・応用情報技術者では、個数対応を問う問題が出ます。関係は2つです。
1対1:リレーションは「ー」で図示
1対多:リレーションは「→」で図示
多の方に矢尻「>」がつきます。多対1なら「←」。
では問題演習をしましょう。ITパスポートでは令和5~元年度までに1度しか出てませんが、基本情報技術者では必要なので今のうちに。
正答はア。
リレーション「ー」「→」「←」を一気には決めません。左右別々に決めていきます。
あるエンティティを1個にして、相手エンティティを見たら何個対応してそうか、を考えます。その後に、今度は相手エンティティを1個にして、自分が何個対応しているかを見て決めます。
1つコツがあります。
多対多「⇔」は、考えなくてOK。
難しい話ですが、多対多はデータベースでは避けるべきことだから。(多対多の中間に連関エンティティを新設して1対多と多対1に分割します。[E]→[連関E]←[E]。)
正規化の過去問1 | 外部キーの確認
まず一番簡単な「外部キーの確認」だけで解ける問題です。
外部キーが参照先表の主キーを指していればOK。
正答はエ。
まず、何となく以下のことが分かりませんか? ここで「~コード」「~番号」「~ID」は主キーになるだろうなぁと「アタリ」を付けてもOKです。
あとは、矢印の根本を主キーにして表を作っていきます。
ただし、外部キーになる項目を残し、別表の主キーを指しているようにします。
正規化の過去問2 | 実際のデータを考えて解く
次は、確認ポイントを1点増やして解く問題いきます。
外部キーが別表の主キーを参照しているか
実際のデータを考えて、使用に不都合がでないか
正答はア。
選択肢を一つずつ見ていきますね。
まずは正解のア。
顧客名と住所は早々変わらないし
商品名と単価も早々変わらないし
注文個数と注文日は、注文ごとに違うよな
と思えればOKです。
(なお、データベーススペシャリストレベルの話ですが。単価がころころ変動するガソリンの場合は、注文表に単価を置いた方が良いです。)
選択肢に顧客番号と商品番号に下線があるので主キーです。よって参照先の列が主キーではないので誤り。
とはいえ、顧客名と商品名が主キーだったらワンチャンOK。ただし、同姓同名の顧客、全く同名の商品の登録はできません。
イと同じで外部キーが主キーを指していないのでダメ。
また日付は注文表(下)に欲しいですね。毎回の注文での日付を記録したいですから。
なお、顧客表(上)に日付を書く時は「最新購入日」など、「最近購入してくれてないお客さん」を探したいなどの目的で設置することはあります。
外部キーはOK。他に3点もツッコミ所がありますね。
最後の問題も、外部キーと実データチェックで解けます。
正答はア。 一つずつ見ていきましょう。
アの右表。3つの列からなる複合主キーです。珍しいです。
誰が、どの試験を、いつ受けて、合否どうだった?なので。
ウの右は、同じ試験を複数回受験した時に不具合がでます。
ウの左表に対して、エの左表は社員IDと試験日を複合主キーして一意性は確保してるのでまだOK。しかし、どの試験種別を受験したかが分かりません。
まとめ | 正規化を生かせば結合問題も解ける
今回は3点学びました。
E-R図の個数対応は片方ずつ、1個に固定して決めていく
外部キーが別表の主キーを参照しているか
実際のデータを考えて、使用に不都合がでないか
次は正規化(表の分割)と結合。逆手順なのですぐに解けるようになりますよ。
>>正規化の演習問題対策Note<< ←今ここ
>>データベース結合と集計の対策Note<< ←次どうぞ!
\全てのNoteへのリンク集/
p.s. 普段は >> 専門学校とIT就職のブログ << をやってます。
でわでわ(・ω・▼)ノシ