🍉しいたげられたしいたけ

NO WAR! 戊争反察Ceasefire Now! 䞀刻も早い停戊を

デヌタベヌス構築における情報凊理詊隓技術者詊隓出題内容ずAccessなど゜フトの霟霬に関する私的メモ前線

デヌタベヌス蚭蚈で、情報凊理技術者詊隓で出題される内容ず、Accessなどデヌタベヌス゜フトでテヌブルを構築する堎合に、若干の霟霬があるこずは䜕幎も前からずっず気になっおいたが、それが蚀語化できそうな気がしたので自分甚にメモする。

業務でやっおいる人が芋たら錻で笑うような初歩的な内容であるこずを、あらかじめお断りしおおきたす。たた情報凊理技術者詊隓ず蚀っおも、比范的難易床が䜎い「ITパスポヌト」やその前身の「初玚システムアドミニストレヌタ」、それに昔の「二皮」で出題されるレベルです。「二皮」に代った珟圚の「基本情報」は、あたりチェックしおいたせん。䞊玚の「デヌタベヌススペシャリスト」に至っおは、問題すら芋おいたせん。

匊ブログはアフィリ゚むト広告を利甚しおいたす

 

 

「ITパスポヌト」の詊隓問題は、幎に4月ず10月の二床、公開される。盎近の平成272015幎秋期に公開された問題からである。

問60

ファむルで管理されおいた受泚デヌタを受泚に関する情報ず商品に関する情報に分割しお正芏化を行った䞊で関係デヌタベヌスの衚で管理する。正芏化を行った結果の衚の組合せずしお最も適切なものはどれか。ここで同䞀商品名で単䟡が異なるずきは商品番号も異なるものずする。

受泚番号 発泚者名 商品番号 商品名 個数 単䟡
T0001 山田花子 M0001 商品1 5 3,000
T0002 朚村倪郎 M0002 商品2 3 4,000
T0003 䜐藀秋子 M0001 商品1 2 3,000

ã‚Š

受泚番号 発泚者名 商品番号 個数

 

商品番号 商品名 単䟡

遞択肢ア、む、゚略

 【ITパスポヌト詊隓】過去問題問題冊子・解答䟋 より

この問題を芋たずき「あれっ」ず思ったのだ。過去に情報凊理技術者詊隓で出題された問題のパタヌンず違う。Accessなどデヌタベヌス゜フトでテヌブルを䜜成するやり方に近いず思ったのだ。「など」ず曞いたが、私がある皋床知識を持っおるデヌタベヌス゜フトはAccessだけだけど。

 倚くの情報凊理技術者詊隓の参考曞には、デヌタベヌス蚭蚈方法ずしお「第䞀正芏化」「第二正芏化」「第䞉正芏化」が茉っおいる。

第䞀正芏化ずいうのは、衚を䞀行䞀レコヌド にするこずだ。䞀レコヌドが耇数行になっおはいけないのだ。䞊掲の問題では第䞀正芏化はすでに枈んでいる。

第二正芏化を行う前に、「䞻キヌ」の遞定を行う必芁がある。

䞻キヌずいうのは、衚の項目列のうち、ある項目が決定するず他の項目のすべおが䞀぀だけ決たっおしたうような項目のこずだ。

䞊掲の問題では「受泚番号」が決たるず他の項目がすべお決たる。受泚番号が “T0001” ず決たれば、“山田花子” が、単䟡3,000円の “商品1” を、5぀泚文したずいうこずが決定する。逆に「発泚者名」が “山田花子” ず決たっおも、“山田花子” は䜕床も泚文しおいるかも知れないから「受泚番号」は決められない。いろんな商品をいろんな数量泚文しおいるかも知れないから、「商品番号」その他も決たらない。「商品番号」が “M0001” ず決たっおも、“山田花子” 以倖の発泚者も “M0001”  を泚文しおいるだろうから、「受泚番号」や「発泚者名」は決たらない。

ここで倧事なのは、過去に情報凊理技術者詊隓で出題された問題においお、䞻キヌが䞀぀であったこずはほずんどなかったこずだ。すべおの問題をチェックしおいるわけじゃないから、もしかしたらあったかも知れないが、私は蚘憶がない。

過去に出題されたのは、䞻キヌが耇数の項目の組合せずなるケヌスばかりである。䞻キヌが二぀ずいうこずが倚い。

䟋えば、䞊掲問題の衚から項目「受泚番号」を取り陀いた䞋蚘のような衚を正芏化せよ、ずいった感じだ。

発泚者名 商品番号 商品名 個数 単䟡
山田花子 M0001 商品1 5 3,000
朚村倪郎 M0002 商品2 3 4,000
䜐藀秋子 M0001 商品1 2 5,000

この架空の䟋の堎合、「発泚者名」ず「商品番号」が決たるず、「個数」は䜕個かずいうこずが決たる。埓っお䞻キヌは「発泚者名」ず「商品番号」である。

これだけ準備しお、ようやく第二正芏化の説明ができる。第二正芏化ずは、䞻キヌのうち䞀぀が決たれば決たる項目を、別の衚ずしお分離するこずだ。

架空の問題の䟋で蚀えば、「商品番号」が決たれば「商品名」ず「単䟡」は決たる。埓っお「商品番号」「商品名」「単䟡」だけからなる衚を独立させるのだ。

すなわち

発泚者名 商品番号 個数
山田花子 M0001 5
朚村倪郎 M0002 3
䜐藀秋子 M0001 2

ず

商品番号 商品名 単䟡
M0001 商品1 3,000
M0002 商品2 4,000
M0001 商品1 3,000

の二぀に分割する。埌者の衚は商品番号 “M0001” が重耇しおいるから

商品番号 商品名 単䟡
M0001 商品1 3,000
M0002 商品2 4,000

ず圧瞮する。

元の衚は「商品番号」をキヌずしお結合すれば埩元できる。たた衚を分割、圧瞮するこずによっおサむズが圧瞮できるし、「商品名」や「単䟡」に改定があった時に䞀箇所を盎せば枈むようになる。

問題は、Accessでテヌブルを䜜成するずき、この架空の䟋のようなテヌブルの䜜り方ができないこずだ。Accessでは、1レコヌドに必ずナニヌクな「唯䞀の」っお意味ね倀を持぀「ID」ずいう項目を蚭ける必芁がある。そしおその項目を「䞻キヌ」に蚭定する必芁がある。぀たりAccessでは、䞻キヌは必ず䞀぀の衚に䞀぀なのだ

぀たり、初めに匕甚した問題の衚の䜜り方は、ある意味Access流ず蚀える。この衚の堎合、第二正芏化もすでに枈んでいる。

私なりの結論を述べる前に、第䞉正芏化も説明させおください。第䞉正芏化ずは、䞻キヌ以倖の項目間に「ある項目が決たるず他の項目が決たる」ずいう関係がある堎合、それらを別の衚ずしお取り出すこずだ。

最初に掲げた問題の衚を䟋にずるず、「商品番号」が決たれば「商品名」ず「単䟡」は決たる。埓っお「商品番号」「商品名」「単䟡」だけからなる衚を独立させる。

すなわち

受泚番号 発泚者名 商品番号 個数
T0001 山田花子 M0001 5
T0002 朚村倪郎 M0002 3
T0003 䜐藀秋子 M0001 2

ず

商品番号 商品名 単䟡
M0001 商品1 3,000
M0002 商品2 4,000
M0001 商品1 3,000

の二぀に分割する。埌者の衚は商品番号 “M0001” が重耇しおいるから

商品番号 商品名 単䟡
M0001 商品1 3,000
M0002 商品2 4,000

ず圧瞮する。ちなみに正解の遞択肢「り」に瀺されおいるのは、これらの衚の項目名だけを䞊べたものである。

最終的な結果は圓然、架空の䟋ず同じである。だが架空の䟋では第二正芏化でやるべきこずが、実際に出題された問題のほうでは第䞉正芏化になるのだ。

 ナニヌクな項目「受泚番号」があるかないかで、手順の名称が第二正芏化か第䞉正芏化か倉わるずは、どういうこずだろう そもそも第䞀正芏化第䞉正芏化ずいうのは、誰でも矛盟のないデヌタベヌスを構築するための䟿宜的なものに過ぎないず蚀われる。

だがこれで、倚くの情報凊理技術者詊隓の参考曞に茉っおいる正芏化の説明の問題点に気づいた。

ちょっず長くなったので前埌線に分け、ここたでを前線ずしたす。

匊ブログはアフィリ゚むト広告を利甚しおいたす

 

Â