僕はSQLをこう学んだ

Pocket

いくらRDBの操作を抽象化してくれる便利なライブラリ(ORマッパーとか)を使っていても、それでもRDBを使う限りは、テーブル設計の考え方にしろ抽出ロジックの考え方にしろ、SQLを知っていないとやりづらいと思うのです。

でも正直、「SQLこう学べば一発でわかるようになるよ」と言えるほど教えるノウハウはない。なので、僕がどうSQLを勉強したか書いておこうと思います。

正直、情報処理の試験で問われるまでSQLを使う用事がなかった

プログラミングの歴だけは長いのですが、SQLを勉強する必要が出たのは、新卒で入社した会社で「ソフトウェア開発技術者(現・応用情報処理技術者)を取りなさい」と言われてからです。

いきなりお勉強的なムードからSQLを学ぶ必要が出てしまったので、最初は全くやる気にならなかった・・・ので、これはいかんと思って、何とか手を動かそうと思って、手にとったのがSQL書き方ドリルという本。

改訂新版 反復学習ソフト付き SQL書き方ドリル (WEB+DB PRESS plusシリーズ)
羽生 章洋 和田 省二
技術評論社
売り上げランキング: 7,802

この本の付録についてる「SQUAT(スクワット)」というSQLトレーニングツールがよくできていて、いろんなSQLを書いてどんな実行結果が出るかを試してみて、やっとSQLが理解できました。

SQLを学ぶときの障害って、

  • 環境構築するのが面倒。
  • データを用意するのが面倒。

という2つがあると思っていて、この両方をクリアしてくれるのはこの本ぐらいなんじゃないかなーと思います。

前者の環境構築面では、今ではSQL fiddleというブラウザでSQLの実行結果を確認できるツールがあるので、結構気楽に実行結果を確認できると思うのですが、やっぱりデータセットを用意するのが面倒ですね。最初は出来合いのそれっぽいデータセットでSQLを叩くのが上達の近道だと思います。

そのあとはミックさんのウェブサイトを読み込んでいた

ミックさんというデータハウス系のDBエンジニアの方が書かれている「リレーショナル・データベースの世界」というウェブサイトがよくできていて、かなりこのサイトで勉強させてもらった記憶があります。

僕がSELECT句を書くときに、

と、行の後にカンマを打つのではなく行の先頭(要素と要素の間)に書くようになったのは明らかにこのサイトの影響です(SQLプログラミング作法)。

そんなミックさんの書かれた達人に学ぶSQL徹底指南書という本が、僕の中のSQLバイブルです。

達人に学ぶ SQL徹底指南書 (CodeZine BOOKS)
ミック
翔泳社
売り上げランキング: 15,008

これとOracle SQLパズルというサイトを参考にSQLを考えれば、大抵のものは書けた気がします。

ところで「プログラマのためのSQL」というミックさんが翻訳されている、「これが本当のSQLのバイブル!」と呼ばれている本があるのですが、これは僕の肌には全然合いませんでした・・・分厚いし、読んでてつらかった。

プログラマのためのSQL 第4版
ジョー・セルコ Joe Celko
翔泳社
売り上げランキング: 92,679

テーブル設計はどう勉強した?

SQLとテーブル設計は別物ではありますが、SQL使う用事があるならテーブル設計もしなくちゃいけない状況にあることがほとんどです。

RDBのテーブル設計のやり方(正規化とかそういうの)は、ソフトウェア開発技術者の勉強の過程でさわりぐらいは勉強していたので、僕が読んでいたのはこんな感じの、もうちょっと業務に近いテーブル設計の本です。

グラス片手にデータベース設計 ~会計システム編 (DBMagazine SELECTION)
梅田 弘之
翔泳社
売り上げランキング: 151,034

元々はこんな本が鉄板でおすすめされていて、買ってはいたのですが、積読しておりました。SQL書き方ドリルと同じ著者の方ですね。久しぶりに本を開いてみたのですが、確かに良著で、当時なんで積読していたのかな・・・と不思議でなりません。

楽々ERDレッスン (CodeZine BOOKS)
(株)スターロジック 羽生 章洋
翔泳社
売り上げランキング: 80,726

T字形ERというデータモデル設計法

上記のようなテーブル設計とは別に、かなり興味を持って勉強していたのがT字形ERというデータモデル設計法です。

たまたま前にいた会社の自由参加型の研修に応募したときに出会った考え方なのですが、佐藤正美という先生がなかなかヘンクツで面白い人で引きこまれたのでした。

太っ腹なことに、研修で使っているテキストも公開してくれています:TMの最新バージョン

書籍にもなっていて、T字形ER自体を一番詳しく説明している本は以下の本になります。

データベース設計論 T字形ER―関係モデルとオジブェクト指向の統合をめざして
佐藤 正美
ソフトリサーチセンター
売り上げランキング: 256,711

とはいえ、かなり難解な語り口調で書かれているので、本だけで理解するのはなかなか大変かも知れません。

僕の場合は、会社の研修に加えて、早稲田大学のエクステンションセンターというところで行われている事業の実態がわかる事業分析技術・データベース設計技術という講義を自費で受講しに行っていました。

講義の内容はなかなかタフなもので、会社を早くあがってこの講義に駆けつける、というのがえらい大変だったな・・・という思い出があります。この講義のあとに先生交えて受講生同士で飲みに行くのが楽しかったなーというのも、思い出の一つですw

T字形ERはRailsでのテーブル設計と相性が良い考え方でもあるので、また折に触れて整理した状態でご紹介したいです。