「ノリとハサミの紙工作で原理を学べるSQL入門書」


いつも、本当にありがとうございます。

いよいよGWに突入しましたね。今年のGWも、俺カレンダー*1通り勤務のtakaxiです。

拙著『スッキリわかるJava入門』についても、あたたかい書評をいつもありがとうございます。

その筋の学者肌な方には顔をしかめられてしまうような「ゆるふわ系Java入門書」であることは、前回のブログ記事で書いた通りですが、「わかりやすさ・ファースト」の想いを読み手の方に汲んでいただけていること、本当に有り難いことだと感じて日々過ごしています。

スッキリシリーズに仲間が増えました。

そんなスッキリシリーズに、この4月下旬、仲間が増えました!


スッキリわかる SQL 入門 ドリル215問付き!


スッキリわかるJava入門シリーズで大変ご好評いただいている、わかりやすい解説と楽しいイラストで、データベースとSQLをスッキリマスターしていただけます。

もちろん、Java入門書では編集長の目を盗んで索引に「ぬるぽ」を仕込むなどした著者ですので、今回も「学び手の心に大事なことが残るように」いろいろ仕込ませていただいてます。


Javaともども、どうぞ宜しくお願い致します。

告白:「結合と正規化で頭ぽかーん」な新人時代

偉そうにSQL入門書とか書いていますが、正直に告白します。

私、データベースは超ニガテでした。

どのぐらいニガテだったかというと、

人生初の昇進試験で、ある大問(正規化)を、まるまる白紙で出した

ぐらいニガテでした*2


学生時代からプログラミングをしていたので、DBとかもすぐにモノにしそうなものですが、どうもこのSQLやDBの世界になじむのに時間がかかっちゃってですね...。特に、どうも肌に合わないと感じたのが以下の3点です。

  • ドリルとかでたくさんSQLを書くと構文を覚えるんだけど、細かいところをすぐ忘れちゃう*3
  • 結合の考え方がどうもしっくりこない。なんか、言われればわかるのだけど、腹おちしないというか...。
  • とにかく正規化がわからん。ノリ・勢い・フィーリングで、第3正規形なものができたり、できなかったり。


これらは一度理解してしまえば「どうして悩んでいたんだろう?」と思うようなことなのですが、すごく苦労したことだけはよく覚えています。

そういう方・そうだったという方、けっこういません? 私だけかなぁ...。

私にとってのガンだった、「結合」の解説図

たとえば結合について、私が何につまづいていたかというと、以下のような「よくある解説図」が原因でした。



この図にだけは個人的に相当ウラミがあります*4

・一見、「2つの表を左右からガッチャンコするんだな」と思わせる
・しかし、実は単に表をニコイチするわけではゼンゼンない*5


一体何なんスか、この「宝箱と見せかけて、実はミミックで血だらけ」っていう懐かしい感じ


結局「表と表を繋いでいるんではなく、行と行を繋いでいるんだ」ということを理解したのは、随分あとになってからのことです。

『スッキリわかるSQL入門』では、私のように誤った結合のイメージを抱かないようにさまざまな解説を加え、また正しいイメージをしっかり腹おちしていただけるように心がけました。


疑問解決率100%! 紙工作で結合を体験する

そんな私もいまや、データベース系の入門学習をお手伝いするようになりました。実際に学習の様子を拝見していると、SQLの基本命令まではスイスイ理解できたのに、結合(JOIN)が登場して急に「んっ...?!」と悩み始める方は多いです。


一方、技術を伝えるプロの視点で考えても、実はこの「テーブルの結合」という分野は「初心者に対して、文章でも図でも説明が難しい」という特性があります。


そこで今回、『スッキリわかるSQL入門』では、講義でよく使う奥の手を盛り込みました! それは、

ノリとハサミを使った「紙工作」


このSQL入門書、あるページを開くといきなり「ノリシロ」とか書いてあるページがあります*6が、印刷所に乱丁のクレームを入れないよう注意してください。仕様です。


このページにある2つのテーブルの内容をコンビニコピーで印刷し、ハサミで切り抜き、実際にDBMSがやっているのと同様に結合作業を手で行うのです。


「それぞれの行について、外部キーが同じ行の紙をもってきて、表の横に貼り付けていく」というこの作業。実際に講義の中で行うと、明らかに学び手の目の輝きが違いますね。さっきまでうつろだった瞳の中に、自信に満ちてきます。


これまで、この方法で結合の挫折から立ち直れなかった学び手はいません

この春SQLを学ぶみなさんの中に、私同様、JOINがどうもしっくりこない方がいらしたら、ぜひ本書p251掲載の紙工作をやってみてください!


「わからない気持ち」をわかる価値

日々過ごしていると、「この人、頭いいなぁ。作りが違う」と感じる方と出会うことがあります。


超凡人な私は、はじめて学ぶ当時、スッキリとSQLを理解できませんでした。


でも、そのおかげで「わからない気持ち」が少しわかるのかもしれないと、10年以上たった今は思えます。

SQLに限らず、今、新入社員研修や授業で「難しい・わからない」と悩んでいる方も、安心してください。

「すんなり理解できなかった者だけが得られるもの」だって、たくさんあるんですよ。

スッキリわかる SQL 入門 ドリル215問付き! (スッキリシリーズ)

スッキリわかる SQL 入門 ドリル215問付き! (スッキリシリーズ)

*1:曜日欄には「月月火水木金金」と書いてあります。

*2:えぇ。哀れみをたたえた瞳をした同期に「おまえ英雄だわ」って言われるぐらい。

*3:「FROMとかINTOとか、ややこい助動詞ほんまやめてくれ」って何度思ったことか。

*4:おのれの理解力不足に起因するただの逆恨みなんですが

*5:結合済みの表の中身もシレっと書き換えてあるあたり、計画的かつ残忍な犯行であって情状酌量の余地はない(俺地方裁判所, 2002年判例)

*6:マオリ・タニオリ・キリトリセンもやりたかったが自重