勉強して受ける応用情報の午後選択(4)努力派の最後の頼みの綱 データベース

DBはうっかりしているとSQLの知識不足で落とすことはある。しかし,そもそもの知識量はそんなに多くない。10回に1回ぐらいくる変な(ER図もSQLもないという意味)問題以外は,問題はほぼ一定傾向である。

満点を取れと言われると大変。しかし,練習によって半分をコンスタントは万人向けではないかと思う。

勝負に使うにせよしのぎに使うにせよ,努力派なら使うことをぜひ考えたい分野である。

要約

  • 数学向いてないとかプログラミングとか文系だからとかで先入観を持って選択しないのは損
  • ER図とキーは問題数が少ない代わりに取りやすい難易度にしてくれてる
  • SQLは努力のためのツールが多くある
  • ER図+埋めやすいSQL+もう1題何かがんばるで5割

向き不向きも激しいと言われるが

学校数学ができないからデータベースができないとは限らない

数学苦手だと厳しいとか論理思考苦手だと厳しいとかは言われるところである。しかし,これも先入観で避けているという可能性もないこともない。データベースに学校数学特有の面倒な処理などはない。

高校数学文脈でいうと,ただ単に数1や数2っぽいただひたすら計算は苦手だが,なぜか確率や数列だけはできる人がいる,といったのと似たことが起こってもおかしくはない。

論理といっても,昔の午後1のバリバリの正規化理論をやるわけでもないのであまり関係ない。

SQLとプログラミング能力も違う

たとえ事務職だとしてもSQLはできる可能性を探るのは十分にありだと言われている。以下に書くようにツールもあるので,やりこんでみたら実は向いてました,となってたら超幸運である。

臨機応変力が少なくて済むありがたさ

コンスタントに点数を計算するために一番ありがたいこととして,この分野は問題文の読み書きとか臨機応変に対応するとかがわりと少なくて済むのである。少なくとも12点取るぐらいなら大丈夫だと思う。このメリットは,学力自信ない派・努力カバーからすると非常に大きい。

SQLを白紙から書くのが厳しいと敬遠してしまうかもしれない(実は昔の私もそう思ってた。これはプログラミングも同じ。)。しかし,解答を一度ざらっと見て欲しい。全文を空で書けと言ってるわけではない。1フレーズや2フレーズである。問題文の日本語から丹念にひねり出すのに比べれば,(頭にある前提で)頭からこれをひねりだすのは,格段に楽である。私は基本情報より簡単だと思ってる(変な選択肢から選ぶよりよほど素直)。

SQLは努力のための教材が多くある

SQLはトレーニングのための良い教材が山ほどある。これは努力派にとっては決定的にありがたいことでする。

まず,ここも高度の教材を使うという選択肢がある。三好先生の本はうまくできてると思う。というか,そういう使い方のためにも使えると明言している。

初心者の基礎積み上げ教材もたくさんある。

SQL書き方ドリルみたいな本とかProgateとか初心者が,ドリルのように学ぶ教材も多くある。基本情報向けの教材もかなりある。

自分は暗記4択は苦手だが,そういうのが好きな人は,例えばOracle(標準SQLとは微妙に違うらしいが)とかOSS-DBとか,何か他の積み上げ系4択資格をペースメーカーに使うのもありえる。

他の問題に比べると,努力系選択肢は充実している。その意味でも,時間をかける・地道な努力をすることを苦と感じない人にはお勧めである。

SQLの書きの比率が高いことは,短時間・実務関係ない派からは普通は嫌われる(いちいち覚えてられるかと)。しかし,地道系・努力の人はこの裏返しで,(訓練をベースにして)覚えていればOK,非常にありがたいとなる。

(11/21追記)

考えていたら,SQLのトレーニングでSQL問題が解けるとは限らないことに気付いた。きっかけは瀬戸先生のデータベーススペシャリスト本の前書きの「データベースの理論や仕組みと組み合わせて文法を理解する」を読んだこと。はっとさせられて,直感的にも正しそうな主張だとも納得して,ちょっと例を探してみるかと考えてて気付いた。

例えば,joinの条件考えるためには,問題文の要件とかER図とか表の出力結果数行をイメージする必要があることがある。これは文法ドリルで身に付かない。データベース設計のトレーニングの結果としてできるようになることである。

自分は読み取りが得意なのと訓練で設計問題ができる側になってたので,結合条件のとこぐらい書けば取れるだろうと思ってた。しかし,冷静に考えると違った。初心者の頃は,確かにどことどこjoinするかを問題文から読むのは大変だった。

文法の練習で行けるところとそうでないところは,問題を分析して仕分けして考えてみないとならなくて,それはそのうち行う。

ただ,仮に設計もそれなりに必要という結論が出たとしても,設計問題側も努力で訓練可能なので,努力でなんとかなるという結論はあまり変わらないとは現時点では思っている。

ER図は努力でなんとかなるレベル

ER図と外部キーの習熟には習熟に時間がかかる。絶対安定をさせるには,絶対に常識で軽々と判断して線を引かない,という訓練を一回はする必要はある(適当でもだいたい合うが,それは得点源とは言わない)。それにもかかわらず4~6点しかないのはやってられるか(問題数から配点を推定)と思わないでもない。

しかし,そういう位置づけの問題なので,勉強さえしておけば4点~6点取れる親切な難易度で止めてくれている感がある。ということは,努力すれば解ける道が見えている。

努力で勝負をかけるならSELECT系以外もしっかり

R2のように,いきなり参照制約が出てきたりもする。いきなりGRANTとかも出てきた回もある。こういうところも,事前にしっかり押さえておく。押さえておきさえすれば点になるのだから,努力派からするとありがたいと思う。

データベースも10点の意味でお勧め

ER図・簡単目なSQLの穴埋めでまずは8点ぐらいを確保

ER図とSQLの簡単目な穴埋めでだいたい6~8点ぐらいは埋まる。

後は運を天に任せる(といっても任せ度はマネジメントほどではないが)

ER図+簡単に埋めれるSQLに加えて,だいたい8点ぐらいである。

あともう一個がんばって穴埋めをするか,考察問題の部分点でなんとかするか。それで5割ぐらいまで行きそうである。

その場国語はやれば確実に取れるとは言えない。ただ,SQLかその場国語かどっちかが取れれば良いで割り切きりは聞く。そして,その他の国語も他の分野の国語よりよほど楽な国語。

ボギー寄りのパーでとどめるとしても

ここもボギー寄りのパーでとどめるとしても,,選択問題を1個捨てれるオプションができたと認識できる。この効果は前のエントリで書いた通り。

押さえとして置いたとしても14点取れて良かったもありえる。まあ,それは押さえとした場合は期待値としては計算しない。

14点勝負の期待値に使う場合は,めったにでないトピックも含めてしっかりとやっていく。

それでも勘違いで14点になるのは仕方がないとしておくのが精神衛生に良い。

雑記 心理的なもの

何回やっても落ちてるとか取れないなると,できないできないの疑心暗鬼になる。

こういうのを解消するには,何かで自信をつけるのが速い。

ここで考えたSQLのように,それだけを徹底的にやることで努力で習熟まで行ける素材は,そういう自信をつける素材として使いやすい。

自信というのは非常に大きい。ある分野がこれで仕上がるなら,もしかしたら他の分野もこれで仕上げていけるのではという展望が開けてくる。あるいは,本番で「これだけやってこれだけ知ってて,でそれでできませんなら,問題が悪い,というか誰もできない,絶対ぐらいの開き直りもできる。

他の分野だったら午後は毎回バラバラなトピックで出てくる感じがあるので,勉強してもできるようになった,という実感を得にくい。疑心暗鬼にもなる。しかし,SQL(とER図)はほぼ毎回出題なので,このできた,という実感を得やすい。そういった自信回復の意味で,データベースはお勧めの分野でもある。