スッキリわかるSQL入門

「ノリとハサミの紙工作で原理を学べる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に限らず、今、新入社員研修や授業で「難しい・わからない」と悩んでいる方も、安心してください。

今回のまとめ


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

 

参考


このブログ記事は、著者の個人ブログ(flairDays)から移転掲載されたものです。
  1. 曜日欄には「月月火水木金金」と書いてあります。
  2. えぇ。哀れみをたたえた瞳をした同期に「おまえ英雄だわ」って言われるぐらい。
  3. 「FROMとかINTOとか、ややこい助動詞ほんまやめてくれ」って何度思ったことか。
  4. おのれの理解力不足に起因するただの逆恨みなんですが
  5. 結合済みの表の中身もシレっと書き換えてあるあたり、計画的かつ残忍な犯行であって情状酌量の余地はない(俺地方裁判所, 2002年判例)
  6. ヤマオリ・タニオリ・キリトリセンもやりたかったが自重

-スッキリわかるSQL入門
-