初学者ってあっさりした記述で正規形がわかるのか・・・

ここのとこ,OSS-DB Silverのテキストを読んでる。

理論だけで合格が取れてた頃のDB持ちとしては,理論のとこで1点たりとも落としたくないので,念入りの再確認をしているとこである。

テキスト,一回わかってる人の立場から読むと理論の記述が過不足なくまとまっていて非常に良い。ただ,自分が初学者の頃だったらこれ死んでない?と思ったのでそれについて書いてみる。

なお,配点が薄いので初学者で読んで合わないと思った人はここは捨て気味でも良いと思う。そういうことを大前提として,以下書いてみる。

公式で範囲と言われていること

公式では理論の部分は「応用情報レベル・各正規系の用語と意味を理解していること」とされている。 (検索を避けるためにあえて原文引用していない)

IPAシラバスによると,第3正規化までを理解。用語例が「完全関数従属・部分関数従属・推移関数従属」である。基本もシラバスレベルでは同じことを言っている。

感覚的には応用情報レベルの理論といえばこれぐらいだと思う

午後で要求している理論の水準は,

  • 問題文読んでふわっと第三正規系にできる
  • ER図の線を正しく引ける

のように思える。(午後選択の場合・午前は知らない。)

(追記) 午前をチラ見したら関数従属並べられててキーの問題は見つけた。

テキスト色々とレベル超えてない?

もう一回試験の前提をまとめておくと。

  • SilverはITSSレベル2(基本情報レベル)
  • 公式は応用情報レベルの理解を要求と主張(レベル3の理解。そもそもLv3の試験に対してその設定もおかしいが。)

で,テキストには

  • テキストは最初から読んでいって初学者が理解できる。

とある。要は初学者向け試験であるということを再確認である。それを踏まえて,このテキストの理論部分,初学者に優しくなくない?を書く。テキストへの批判ではない。そういうテキストなので初学者は理論問題をばさっと捨てるか一冊目の理解に使わないようにしましょう,という趣旨で書いている。

候補キーと主キーの違いから話を始めるのは教育的?

まず,部分関数従属・推移関数従属と更新時異常の関係を例で頭にいれて,その上で候補キーで複数ある場合にはでないと正規系の話って落ちなくない?

候補キーと主キーの違いからやるのって,なんか先に森をみせずに木をみせてる感じ

そもそも,この理解,応用情報レベルで必要でしたっけ?DBの午後1の理論問題のときしか意識したことかないような。あと,初心者向けの設計テキストでは主キーと候補キーの違いをまるっと落としたものも見たことあるような(それもどうかと思うが)。

BCNF以降の正規系・最近はスペシャリストでもでてなくないですか?

DBスペシャリストでも第三正規系までで,そっから後はほとんど出てないと思うのですが。

空気読ませる第三正規系を作る問題

第三正規系に分解する練習も1問ある。概念の理解のためには重要である。しかし,これも初学者に優しくない。

  1. 候補キーは{受注番号,顧客コード}である,という情報で,受注番号という情報で全ては決まらない,すなわち顧客ごとに受注番号があると読み取らせる。
  2. 受注番号と顧客コードに従属するものを「空気で」読み取らせる

一問目としてはハードル高いような。もうやさしめの問題1問挟んでも良くないでしょうか・・・・

なお,自分がこの読み取りができるようになったの,APのPMの問題5セットとDBのPM1の問題を2~3セットぐらい解いてからである。それも試験問題で「問題文を注意深く読んで必要な情報を探し出す」問題を何問か解くことによってできるようになった記憶があり,いきなり空気読めやられたら萎えるような。

というか,この問題,脳みそゼロ状態で読んだら意味わからなかった。脳クリア状態で,選択肢追うのだるいので自分で分解するかで手を動かして,白紙で分解したらわかった。

関数従属性の矢印・第2正規系であって第3正規系でない

この手の問題,DBのPM1で定番だったが,ここ数年出ていない(ので楽しして資格取りたい組はみんな困ってたはず。自分はぎり逃げ切り。)はずである。ちゃんと調べていないが,DBのAM2では出てるかもしれないが,APのAMで関数従属の矢印の話って出てきたっけ?

著者側に立つとしても対処はあると思う

テキストの書き手の立場としては「わかってる人がまとめに使うテキスト」「範囲表の代わりみたいなものだから初学者理解関係ない」と言えば良いのはわかる。しかし,これはSilverのテキストである。いちおうITSSレベル2で基本情報レベルという資格設定の建前とはいえ,素の初心者が読む可能性もあるのである。テキストのはしがきにも初心者ほぼ大丈夫という書きまわしであり,最初から読んでいって積み重ねとも書いてる。

記述スタンスは変えられないとしても,読み方ぐらいは示唆できるのではないかと思う。例えば,データベース設計の章だけは後回しでも良い,ぐらい書いておいてもよくない?目次のそのチャプターとかセクションに星印つけて初学者は一回飛ばしても良いマークをつけておいても良い。だいたい,この章,初学者でも理解可能と思われてるDDL, DML, DCLの話ですら,分類されたSQLが何してるのかわかんないうちに分類表だけ見せられて単純暗記の世界になっているのですが。そして,これがわかってなくてもそこから先は全て理解できるわけたし。

あとは著者側というか出題側がどう考えてるかだからな。。。。問題見てないので何もわからないし,見てても規約上で何も言えないわけだが。